无法在msi中安排我的WiX自定义操作
本文关键字:我的 WiX 自定义 操作 msi | 更新日期: 2023-09-27 18:04:16
我在visual studio中有一个安装解决方案,其中包含c# windows应用程序引导程序和两个msi项目。我想为在卸载过程中运行的两个msis中的一个安排一个自定义操作——所以我首先向同一个解决方案(称为"CustomActions")添加了一个CustomActions项目,该解决方案具有CustomAction.cs文件,该文件定义了要安排的自定义函数。这个函数现在应该只写一些东西到日志文件:
namespace CustomActions
{
public class CustomActions
{
[CustomAction]
public static ActionResult UninstallSecondaryMsi(Session session)
{
session.Log("Begin CustomAction1");
/* Search for ProductCode of the secondary msi here; run msiexec to uninstall it */
return ActionResult.Success;
}
}
我将CustomActions项目引用添加到我的msi项目,然后将以下内容添加到我的product.wxs:
<!-- Custom Actions -->
<Fragment>
<Binary Id="customActionDLL" SourceFile="$(var.CustomActions.TargetDir)'CustomActions.CA.dll" />
<CustomAction Id="CustomAction_GetRegistryKey"
BinaryKey="customActionDLL"
DllEntry="UninstallSecondaryMsi"
Execute="immediate"
Return="check" />
<InstallExecuteSequence>
<Custom Action="CustomAction_GetRegistryKey"
After="InstallFinalize"></Custom>
</InstallExecuteSequence>
</Fragment>
我运行了触发msi的引导程序,但是"Begin CustomAction1"字符串不在日志文件中。我想也许它不只是正确记录,但是当我用Orca.exe查看生成的msi时,我看到我的自定义动作没有在CustomActions表或installeexecutesequence表下安排。
我在这里错过了什么吗?我还猜测CustomActions.CA.dll的路径不正确,并尝试硬编码DLL的路径,但这也不起作用。任何帮助将非常感激,提前感谢!
啊,我的Custom Actions元素在主产品中。WXS文件,但在不同的片段中,该片段没有被引用到任何地方。我在该片段下放置了一个ComponentGroup,并在Feature元素下引用了它的ID -它工作了。我的歉意。