使用VS 2013,我有一箇舊的Windows Installer項目,我正在轉換爲WiX。我已經完成了90%的WiX項目,並顯示相應的對話框,並將所有文件複製到適當的位置。但是,我的最終任務是轉換舊安裝程序項目中定義的自定義操作,位於安裝,提交,回滾和卸載部分下。WiX - 安裝和卸載(或回滾)參數的多個自定義操作
我一直在審查WixToolset Site的代碼,但我很困惑,因爲我不知道WixShellExecTarget
屬性如何與CustomAction綁定(因爲它沒有引用該ID值),我不確定如何傳入參數。另外,我不希望這些操作基於對話框中的複選框......他們應該始終運行。
基本上,而不使用對話複選框(我「認爲」可以通過使用相對於所述UI\Publish
部分InstallExecuteSequence
部被全美基礎),在安裝(或提交),我需要以下,以便運行:
[INSTALLFOLDER]RegisterExtensionDotNet20.exe -i "[INSTALLFOLDER]MyNamespaceExtension.dll"
[INSTALLFOLDER]MyApplication.exe
然後,當卸載(或回滾),之前的文件從文件夾中刪除,我只需要以下運行(注意,從「-i」對參數的變化,以「-u」 ):
[INSTALLFOLDER]RegisterExtensionDotNet20.exe -u "[INSTALLFOLDER]MyNamespaceExtension.dll"
這裏是我的代碼snippit(只是第一個動作...我還沒有想出如何命名第二個動作來運行MyApplication.exe),但它似乎並沒有運行時安裝(和我還沒有想出卸載部分)。
<Product>
<!-- UI, Properties, Directories, Components and Features defined here... -->
<Property Id="WixShellExecTarget" Value="[INSTALLFOLDER]RegisterExtensionDotNet20.exe -i '[INSTALLFOLDER]MyNamespaceExtension.dll'" />
<CustomAction Id="RegisterDotNetExtensionx64" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />
<InstallExecuteSequence>
<Custom Action="RegisterDotNetExtension" Before="InstallFinalize" />
</InstallExecuteSequence>
</Product>
任何輸入,非常感謝!
感謝您的信息,但registerextensionDotnet20.exe是SSWare的EZNamespaceExtensions程序。它基本上爲MyApplication使用的虛擬驅動器創建一個Windows外殼擴展。要安裝擴展,我必須調用他們的EXE,傳入我的DLL,以便它正確地註冊它的組件。我不認爲heat.exe可以取代這個功能。那有意義嗎? – bigmac