0

バックグラウンド

私のソフトウェアは、ソフトウェアが実際に展開されたことを登録するいくつかのカスタム アクションを備えた標準の MSI インストーラーを使用して、グループ ポリシーを介してネットワーク経由で展開されます。

それはすべて非常にシンプルで標準的です。これは大きな Windows アプリであり、すべてのファイルがアプリケーション フォルダーにダンプされ、デスクトップとスタート メニューにすべてのユーザー用のショートカットが作成されます。誰もが満足しています。それは時計仕掛けのように機能し、ソフトウェア インストール GPO はまったく問題を引き起こしません。1 回または 2 回再起動すると、新しいバージョンが簡単にインストール/アップグレードされます。いつもこんなに簡単だったわけではありませんが、私はそうしました。

問題

ただし、再起動を指示せずにすぐに更新を発行したい場合もあります。アプリケーションで次のような簡単な方法を提供できるかどうか疑問に思っていました。

  1. 閉店
  2. 適切なMSIを実行します(これにより、ウィザードが自動的にズームされます。ユーザーがそれを通過する必要はありません
  3. アプリケーションを起動するか、少なくともユーザーにもう一度起動するように伝えます

GPO のインストールで機能する必要があるため、これが現在の MSI 構成にあまり影響を与えたくないのです。Firefox にも同様の更新メカニズムはありませんか?

MSI は、既にインストールされていることを認識できるほど賢いですか? たとえば、私のアプリがそのようなルーチンを実行した場合、PC を再起動すると、GPO の展開は無視されますか? その後、次のバージョンへの更新を発行すると、手動でインストールしたバージョンがアンインストールされ、GPO バージョンで上書きされますか?

これを試すためにVMをノックアップしていますが、これについて経験がある人がいるかどうかを知りたいです.

ありがとう!トム

4

1 に答える 1

0

GPO の変更と更新は、PC の起動時および/またはログオン時にのみ実行されます。それはあなたが変えることができないものです。これにより、GPO によるソフトウェアのインストール方法が制限されます。実際には、PC の起動時にのみ可能です。GPO は管理者アカウントで適用されることに注意してください。

ユーザーがアプリを実行すると、そのアカウントはユーザー権限に制限されます。これにより、ソフトウェアのインストール/変更/削除ができなくなります。単純なユーザーは、この種の管理作業を行うことはできません。Vista 以降では、権利と UAC が制限されていることに注意してください。

これらの制限により、管理者権限で実行される一種のインストール サービスが必要になります。

Microsoft システム センターの構成マネージャーは、GPO の再起動なしでソフトウェアをインストールできます。これができるのは、サービスを利用しているからです。

ソフトウェアのインストール/更新のためにSCCMに切り替えることができるかもしれません。

それができない場合は、アプリのパッチをインストールできる独自のサービスを作成することもできます。

msi 内の正しいアップグレード コードとチェックにより、それらの更新は次回の再起動時に上書きされません。

別の解決策: AIP (管理者インストール ポイント) を使用しています。この AIP は、GPO を介してクライアント PC に展開されます。

私たちのソフトウェアには小さなラッパーがあり、プログラムの開始時に実行されます。このラッパーは、バージョン番号をチェックします。AIP にパッチが適用されている場合、ラッパーはアプリケーションのメイン コンポーネント/機能を再インストールします。

このラッパーは、Windows インストーラー (COM)-API を使用します。FeatureState に応じて、ReinstallFeature および/または ReinstallFeature 関数を使用しています。

于 2012-05-10T12:01:10.187 に答える