2017-10-23 15 views
0

私は古いWindowsセットアッププロジェクトをwixインストーラに移行しています。ウィックスのカスタムアクションから、私はそれが唯一の後と前のプロビジョニングを持っていると思う 、hereを発見しながら私の古いInstallerClassで は、私は4つのイベントコミット、OnAfterInstall、OnBeforeUninstall、OnBeforeInstallWixカスタムアクションでCommitted、OnAfterInstall、OnBeforeUninstall、OnBeforeInstallの同等の実装

を持っています。

以前のインストーラクラスコードを4つの個別のカスタムアクションにマップするにはどうすればよいですか?

答えて

1

WiX Execute = Commitカスタムアクションがコミットされています。

他のすべての名前は、選択肢を提供するように見えますが、実際にはありません。 "OnBeforeInstall"イベントはありません。これはVisual Studioの内部イベントです。他のマネージコードカスタムアクションが呼び出される前に呼び出されるカスタムアクションです。同等のものがないWiXでは無意味です。いずれにせよ、それはインストール前ではありません。 StartServicesアクションのあとにWiXの遅延カスタムアクションを呼び出すのと同じことです。

OnAfterInstallについても同様です。これは、StartServicesの後に呼び出され、他のカスタムアクションの後に呼び出されるWiX遅延カスタムアクションと同じです。

OnBeforeUninstallは、Visual Studioの奇妙な点であり、StopServicesの前に遅延カスタムアクションを呼び出すのと同じです。

すべてのVisual StudioカスタムアクションはInstallExecuteSequenceにあり、impersonate = noを持っています。

Visual Studioに隠されているもう一つのことは、インストールされているコンポーネントとアンインストールされているコンポーネントが内部的に条件づけられていることです(ほとんどの場合)ので、あなたから隠された即時/延期/偽装Visual Studioによって。

Visual StudioでMSIファイルを生成したら、Orca(Windows SDK/Kitから)を使用してMSIファイルを開き、InstallExecuteSequenceテーブルを参照して、シーケンスをクリックして実際の順序で注文することができます。標準的なアクションに加えて、カスタムアクションやコールされたタイミング、タイプと条件も表示されます。これらはCustomActionテーブルで定義されています。

Visual Studioが隠しているのは、奇妙な呼び出し環境を提供するC++のDllインフラストラクチャなので、これらはすべて機能しません。 WiXのマネージコードカスタムアクションは、VSマネージコードカスタムアクションと似ていないので、コードをWiXモデルに移行する必要があります。ここでは例:

https://www.codeproject.com/Articles/511653/Using-WIX-with-Managed-Custom-Action

https://blogs.msdn.microsoft.com/jschaffe/2012/10/23/creating-wix-custom-actions-in-c-and-passing-parameters/

+0

おかげPhilDW。私は同じリンクに従っています。 –

関連する問題