参数未传递给 WiX 中的延迟自定义操作

Posted

技术标签:

【中文标题】参数未传递给 WiX 中的延迟自定义操作【英文标题】:Parameters are not passing to deferred custom actions in WiX 【发布时间】:2013-07-03 01:15:02 【问题描述】:

我编写了一个示例WiX 项目,其中我试图在安装时保存项目文件,然后在卸载过程中删除这些文件。我已经编写了自定义操作来实现这一点。下面是代码。

这里,UninstallCustomAction 是删除安装目录的自定义操作。这是一个延迟操作,我正在尝试使用 SetCustomActionDataValue 自定义操作将 installFolder 路径传递给它。出于某种原因,我无法在会话的 CustomActionData 中访问这些变量。我在这里错过了什么?

<CustomAction Id="SetCustomActionDataValue"
              Return="check"
              Property="Itp.Configurator.WixCustomAction"
              Value="InstallFolder=[INSTALLFOLDER]" />


<CustomAction Id="UninstallCustomAction"
              Return="check"
              Execute="deferred"
              BinaryKey="DTD.LCTOnline.Wix.CustomActions.CA.dll"
              DllEntry="UninstallCustomAction"
              Impersonate="no"
              HideTarget="no"/>
<InstallExecuteSequence>
    <Custom Action="SetCustomActionDataValue"
            Before="UninstallCustomAction"></Custom>
    <Custom Action="UninstallCustomAction"
            Before="InstallFinalize">Installed OR UPGRADINGPRODUCTCODE</Custom>
</InstallExecuteSequence>


[CustomAction]
public static ActionResult UninstallCustomAction(Session session)

    try
    
        System.Diagnostics.Debugger.Launch();
        session.Log("Begin Remove Files");
        Directory.Delete(path,true);
        session.Log("End Remove Files");

    
    catch (Exception ex)
    
        session.Log("ERROR in deleting Files", ex.ToString());
        return ActionResult.Failure;
    
    return ActionResult.Success;

【问题讨论】:

【参考方案1】:

无需自定义操作:在 WixUtilExtension 中使用 RemoveFoldersEx。

【讨论】:

以上是关于参数未传递给 WiX 中的延迟自定义操作的主要内容,如果未能解决你的问题,请参考以下文章

WIX 自定义操作参数中的连接字符串

如何在wix中将属性传递给回滚自定义操作?

wix 自定义操作,管理员组

使用组策略部署时 WIX MSI 自定义操作未运行

Wix延迟自定义操作访问被拒绝

WiX - 带有安装和卸载(或回滚)参数的多个自定义操作