无法在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的路径,但这也不起作用。任何帮助将非常感激,提前感谢!

无法在msi中安排我的WiX自定义操作

啊,我的Custom Actions元素在主产品中。WXS文件,但在不同的片段中,该片段没有被引用到任何地方。我在该片段下放置了一个ComponentGroup,并在Feature元素下引用了它的ID -它工作了。我的歉意。