0

.NET アプリケーションに自動更新を実装する方法について多くの質問が寄せられていることは承知しており、おそらくそれらのほとんどを読んだことがあります。残念ながら、私が知る限り、私の状況に完全に適合するものは見当たりませんでした。

ユーザー アカウントが制限された環境で実行される自己更新 .NET アプリケーションを構築しようとしています。ここには管理者権限はありません。アプリケーションは、Vista と XP で実行する必要があり、リリース時にはおそらく Win 7 で実行する必要があります。X-copy 展開で問題ありません。クリックワンスを使用したくない

これまでのところ、アプリケーションがマニフェストをチェックし、更新されたバイナリをダウンロードするシステムを試してみました。これは開発ではうまく機能しましたが、アプリがインストールされたときはそれほどうまくいきませんでした。Vista は、ファイルを Program Files にコピーすることを拒否します。その後、更新された .msi をダウンロードしてみました。これは、MSI に UAC プロンプトがあることを除いて機能します。ユーザーがローカル管理者権限を持つアカウントを持っていない場合は実行できません。

一部の投稿では、AppData でプログラムを実行し、x-copy メソッドを使用するとうまくいく可能性があると示唆されていますが、試してみてうまくいったと言う人は見たことがありません。管理者権限のないアカウントでも機能しますか? さらにコードを書き始める前に、誰かがこの方法を保証できますか?

4

2 に答える 2

3

非特権ユーザーがアクセスできる場所に「インストール」(つまり、コピー) していることを確認する必要があります。

Program Files には、特権を持たないユーザーが書き込めないことを除けば (デフォルトでは) 魔法のようなものは何もありません。

管理者に最初のインストールを行ってもらう場合は、プログラム ファイル フォルダーのアクセス許可を変更して、その後のアップグレードでそれらのファイルを上書きできるようにすることができます。しかし、それは物事の精神ではありません。

ClickOnce の主な欠点は、インストール場所が一般的ではないことと、インストーラーがプリミティブであることです。とにかく変な場所に xcopy を実行する場合は、ClickOnce の厄介な点の多くが既にあり、利点はありません。

于 2009-04-16T22:28:43.410 に答える