使用VS 2013,我有一个旧的Windows Installer项目,我正在转换为WiX。我将90%的WiX项目完成,并显示相应的对话框,并将所有文件复制到适当的位置。但是,我的最后一项任务是转换旧的Windows Installer项目中定义的自定义操作,包括安装,提交,回滚和卸载部分。
我一直在审核WixToolset Site中的代码,但我感到困惑,因为我不知道WixShellExecTarget
属性如何与CustomAction相关联(因为它没有&#39} ; t引用该ID值)并且我不确定如何传入参数。此外,我不希望操作基于对话框中的复选框...它们应始终运行。
基本上,不使用对话框复选框(我认为"可以使用InstallExecuteSequence
部分而不是UI\Publish
部分完成),安装(或提交) ),我需要以下顺序运行:
[INSTALLFOLDER]RegisterExtensionDotNet20.exe -i "[INSTALLFOLDER]MyNamespaceExtension.dll"
[INSTALLFOLDER]MyApplication.exe
然后,在从文件夹中删除文件之前卸载(或回滚)时,我只需运行以下命令(请注意&#34中参数的更改; -i&# 34;到" -u"):
[INSTALLFOLDER]RegisterExtensionDotNet20.exe -u "[INSTALLFOLDER]MyNamespaceExtension.dll"
这里是我的代码的嗤之以鼻(仅针对第一个操作......我还没弄明白如何命名第二个操作来运行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>
非常感谢任何输入!
答案 0 :(得分:0)
假设我已了解registerextensionDotnet20.exe,您就不需要它了。有关装配注册,请查看WiX工具集中的Heat.exe。这种事情:
How to run heat.exe and register a dll in wix
你不需要任何其他东西,没有回滚,没有卸载等因为它都成为MSI文件中自动处理所有内容的注册表数据的一部分。
(即使在VS设置中,您也可以通过将Dll的属性设置为vsdraCOM的风格来实现此目的。)