6

WIX を使用して MSI インストーラーを作成しようとしています。アンインストール中に、最初にサービスを停止してからアプリケーションを閉じる特殊なカスタム アクションを実行する必要があります。InstallInitialize次のマークアップを使用して、イベントの後にそれを行います。

<CustomAction Id='myCustomAction' BinaryKey='myDll' DllEntry='msiUninstallInitialize' Execute='deferred' Impersonate='no' />

<InstallExecuteSequence>
    <Custom Action='myCustomAction' After='InstallInitialize'></Custom>
</InstallExecuteSequence>

問題は、MSI を使用して新しいバージョンにアップグレードしようとする前にアプリケーションの以前のバージョンが実行されていた場合、再起動マネージャーが次のメッセージを表示していたことです。

ここに画像の説明を入力

そして、これ:

ここに画像の説明を入力

それを止めるために、次のプロパティを追加しました。

<Property Id="MSIRESTARTMANAGERCONTROL" Value="Disable" />

しかし今、アンインストーラーはこのウィンドウを表示します:

ここに画像の説明を入力

アプリが実行されているかどうかのチェックを無効にする方法はありますか (カスタム アクションの処理中に自分で閉じます)。

4

2 に答える 2

5

Windows インストーラーとの再起動マネージャーの対話を無効にしたため、Windows インストーラーは以前の動作である [FileInUse] ダイアログに戻ります。この動作は、 MSIRESTARTMANAGERCONTROL プロパティで文書化されています。

試したことはありませんが、FilesInUse ダイアログを非表示 ( Dialog/@Hidden='yes') にすると、ダイアログが表示されなくなるという理論があります。

于 2014-02-05T17:18:49.560 に答える
1

これに対する解決策は、インストール実行ステージの準備ステップの前に、サービスとプロセスを停止するカスタム アクションを移動することです。

AdvancedInstallerのドキュメントごと(強調は私のもの):

準備中 - すべてのボリュームでインストールに十分なスペースがあることを確認します。インストール ファイルが使用中かどうかを確認し、ユーザーに通知します。このグループの後のアクションに deferred、rollback、または commit フラグを設定できます。これらは、Finish Execution アクション グループによって実行されます。「偽装なし」フラグを使用して、それらを昇格して実行できます。

ただし、これらのカスタム アクションでは「偽装なし」フラグを使用できないことに注意してください。

于 2017-04-10T19:10:39.537 に答える