在我的 Windows WiX 安装程序中,我的自定义操作无法运行



我想让安装程序/卸载程序删除一个文件夹,该文件夹包含应用程序在运行时生成的内容。我认为自定义操作将是一种方式。

我们正在使用WiX 3.6。

(由于一个对这个问题不重要的特定原因,我希望它出现在安装程序序列中。(

以下是我在xml:中的CustomAction定义

<Binary Id="CustomActionLib" SourceFile="$(var.CustomActionLibrary.TargetDir)$(var.CustomActionLibrary.TargetName).CA.dll" />
<CustomAction Id="DeleteLocalizedCA" Impersonate="yes" BinaryKey="CustomActionLib" DllEntry="DeleteLocalized" Return="check" />
<CustomAction Id="DeleteResourcesCA" Impersonate="yes" BinaryKey="CustomActionLib" DllEntry="DeleteResources" Return="check" />

以下是我对它们的参考:

<InstallExecuteSequence>
<Custom Action="DeleteLocalizedCA" Before="InstallFiles"/>
<FindRelatedProducts Before="LaunchConditions" />
<RemoveExistingProducts After="InstallFinalize" />
<RemoveShortcuts>Installed AND NOT UPGRADINGPRODUCTCODE</RemoveShortcuts>
</InstallExecuteSequence>
<InstallUISequence>
<Custom Action="DeleteLocalizedCA" Before="InstallFiles"/>
<FindRelatedProducts Before="LaunchConditions" />
</InstallUISequence>

我将CustomActionLibrary项目添加到解决方案中,并从安装程序项目中添加了对它的引用,但它从未运行过,我从未在日志中看到过它,什么都没有!

因此,我的问题是,为什么我的WiX自定义操作不运行?

经过几个小时的谷歌搜索和阅读(博客文章、文档、堆栈溢出等(和测试,我终于找到了一个没有任何阅读指向的解决方案。

我必须在一个包含ComponentGroup:的片段中放入一个InstallExecuteSequence来包含我的引用

<Fragment>
<InstallExecuteSequence>
<Custom Action="DeleteLocalizedCA" Before="InstallFiles">NOT Installed</Custom>
</InstallExecuteSequence>
<ComponentGroup Id='StringsComponents'>
...
</ComponentGroup>
</Fragment>

我之前放入CustomAction引用的Fragment只有步骤,但没有Component或ComponentGroup,所以显然什么都没做。(我不是安装程序的原作者,只是接替了一位无法帮助我的同事(。

希望这能帮助到其他在同一问题上挣扎的人。

相关内容

  • 没有找到相关文章

最新更新