【问题标题】:WIX - How to use RemoveFilesWIX - 如何使用 RemoveFiles
【发布时间】:2011-08-24 13:26:35
【问题描述】:

我们有多个配置文件。根据选择的环境,复制正确的文件并删除其余文件。
我正在使用RemoveFile,但这并没有删除任何内容,或者我可能没有正确使用它。有人可以举个例子,在安装过程中从[INSTALLDIR] 中删除*.config,在复制所有文件之后。

【问题讨论】:

标签: wix wix3.5 wix3.6


【解决方案1】:

在下面的示例中,RemoveFile 用于在卸载时删除所有图标(.lnk 扩展名),同时使用RemoveFolder 删除父文件夹

<DirectoryRef Id="DirName">
  <Component Id="cmpName" Guid="{429BC364-BE5F-4EC8-9AB9-8A522F8EC089}">
    <RemoveFile Id="removeDesktopShortcuts" On ="uninstall" Name="*.lnk"/>
    <RemoveFolder Id="RemoveFolder1" On="uninstall"/>
  </Component>
</DirectoryRef>

【讨论】:

    【解决方案2】:

    您为什么不选择自定义操作。在 C# 或其他语言中创建一个方法,然后在“InstallFinalize”之后调用它。

    例子:

    [CustomAction]
    public static ActionResult RemoveConfigs(Session session)
    { 
        string configfiles = "\"" + session["INSTALLDIR"].ToString() + "*.config\"" ;
        System.Diagnostics.Process.Start("cmd.exe", "/C del " + configfiles);
    
        return ActionResult.Success;
    }
    

    在 CustomAction.wxs 中添加

    <Custom Action="ZA_RemoveConfigs" After="InstallFinalize">NOT INSTALLED AND NOT REMOVE</Custom>
    

    【讨论】:

    • 这种方法在启用 UAC 的系统上会失败。 InstallFinalize 运行后的操作未提升,您可能会面临权限被拒绝。我不建议这样做,但这是一个简单的解决方案。
    • 我使用的是相同的,并且在用户访问最少的服务器上运行良好。 UAC 访问工作正常。这也可以正常工作,因为安装位置不会在某些操作系统文件夹中,如 C:\Windows\system32 等。
    • 重点是:如果INSTALLDIR 是默认程序文件,它将不起作用。
    • 自定义操作有效,但我不想这样做,只是想看看是否有可用的OOB。
    猜你喜欢
    • 2012-01-03
    • 2014-03-13
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 2014-10-21
    相关资源
    最近更新 更多