【问题标题】:WiX Custom Action - Pass file listWiX 自定义操作 - 传递文件列表
【发布时间】:2012-06-08 12:40:27
【问题描述】:

我正在为一个插件准备安装包,它替换了其他应用程序的一些文件。我需要对这些文件进行备份,所以我准备了 CustomAction 来做这件事。

如何将在安装期间复制的所有文件的自定义操作位置作为参数传递?我需要手动制作该列表吗?

【问题讨论】:

    标签: installation wix wix3.6


    【解决方案1】:

    为什么不使用WiX CopyFile 元素来备份这些文件,而不是创建自定义操作。

    【讨论】:

    • 主要问题是在卸载过程中,由 CopyFile 创建的文件也会被删除。
    • 您正在复制机器上已经存在的文件,对吗?在那种情况下,我怀疑它们会在卸载时被删除。
    • 是的,它们已经存在。我刚刚将 CopyFile 放在 File 标记中,所以它导致了这种行为。当我将 CopyFile 放入 Component 时,它会备份现有文件,但新文件与旧文件相同。可能我需要做更多的研究。如何在卸载时将备份文件移动到原始状态?
    • 嗯...这听起来像是一个排序问题。该文件在被复制之前被安装。我肯定会将它保存在组件中(而不是文件元素下),然后看看是否可以更改 InstallExecuteSequence 的顺序。这是我的猜测。但是,如果您需要在卸载时将文件复制回原始状态(并且如果 copyfile 任务不会自动执行此操作),那么您可能必须创建自定义操作,因为您不能只使用其他 copyfile 元素。
    • 嗯,我们又回到了起点。如何将文件结构传递给自定义操作...
    【解决方案2】:

    您可以通过在安装程序中设置属性将参数传递给自定义操作。然后像这样在您的自定义操作中访问这些属性(C# 示例):

    [CustomAction]
    public static ActionResult DoWork(Session session)
    {
        session.Log("Begin DoWork");
        string propertyValue = session["PROPERTYNAME"];
        //...
    }
    

    【讨论】:

    • 是的,我知道。我的问题是是否有必要手动创建应作为属性传递给自定义操作的文件列表,还是可以使用已定义组件中的文件列表?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    相关资源
    最近更新 更多