0

InnoSetup を介して、デフォルトで Program Files\FolderName にインストールされる単一の実行可能ファイルがあります。exeには、オンラインで新しいバージョンをチェックしてダウンロードするサードパーティのコンポーネントがあり、exeを置き換えるために少し手間がかかります-簡単なことです。問題は、必要なセキュリティのために Program Files でこれを行うことができないことです。私は Windows 7 を読んでいました- Can't update my program's files in C:\Program Filesで、David Hefferman が解決策を提供していますが、それは悪い考えだと言っているようです- しかし、悪い考えのビットが彼のことを指しているかどうかはわかりません解決策またはOPのコメントへ!

では、プログラムが自分自身を更新できる好ましい方法は何でしょうか? XPSP3 から Win8 で動作するもの。関連する結果を得るために Google に入力する適切なフレーズが見つからないようです。簡単にするために、今のところデジタル署名などは無視してください。

(注意してください、私は意見の質問としてそれを言ったように見えるかもしれませんが、そうではありません-私が見つけることができないMSが承認した方法があるに違いありません.FWIWこれはDelphiプログラムですが、Win32のメモは何でも構いません)

4

3 に答える 3

1

そのサードパーティの更新ユーティリティは、管理者権限で実行する必要があります。これはプログラムで実現できます。

アプリケーションを Program Files にインストールすることに問題はありません。これが、このフォルダーの指定された目的です。ただし、アプリケーションで使用されるユーザー データは、別の場所に保存する必要があります。

ただし、そのサードパーティのユーティリティを実行する場合は、最初に Windows OS のバージョンを確認して、UAC をいじる必要があるかどうか (Vista+...) を確認してから、昇格した状態でユーティリティを実行する必要があります。

于 2013-07-05T17:32:35.310 に答える
0

彼は、通常のユーザーが「Program Files」に書き込めるようにシステムをいじるのは「非常に悪い習慣」だと言います。

プログラムが「Program Files」にある場合、システム管理者権限でインストールされています。そのため、アップデートもシステム管理者権限でインストールする必要があります。

「Program Files」に書き込むことができるように管理者権限を要求するように InnoSetup を構成できますが、サードパーティ コンポーネントがこれを行わない場合は、すべてを別のディレクトリにインストールするのが最善です。

すなわち C:\Your_Program

そうすれば、サードパーティのコンポーネントがそこに書き込むことができます。

于 2013-07-05T17:22:40.580 に答える
-1

ここにはいくつかのオプションがあります。

  • 最も簡単な方法: 管理者権限が必要なマニフェストを使用して、アップデーターを別のプログラムとして作成します。また、アップデーターを起動するときに管理者権限を要求することもできます。または、別の exe ではなく、アウトプロセス COM オブジェクトにアップデーターを移動することもできます。
  • プログラムのインストール中に、管理者権限を持つ非表示のユーザーを作成できます。次に、このユーザーの資格情報を使用してアップデーターを実行します。
  • プログラムのインストール中にシステム サービスをインストールできます。このサービスはシステム アカウントから実行されます。したがって、アップデーターはサービスとして実装されます。
于 2013-07-06T10:54:42.717 に答える