代码之家  ›  专栏  ›  技术社区  ›  kudlatiger

如何在使用Wix卸载期间停止删除文件

  •  0
  • kudlatiger  · 技术社区  · 5 年前

    卸载应用程序时,我想将Wix安装程序配置为 不是 删除作为安装一部分添加的少数文件。卸载程序似乎会删除MSI文件中最初安装的所有文件。我该怎么做?

    这是我的档案,我想永远保存它

    <Binary Id="RootCABinary" SourceFile="Assets\Certificates\RootCA.cer" />
    <Binary Id="SubCABinary" SourceFile="Assets\Certificates\SubCA.cer" />
    

    我用过 WixIIsExtension.dll 将这些证书安装到windows应用商店。

    1 回复  |  直到 5 年前
        1
  •  1
  •   Stein Åsmul    5 年前

    覆盖 :文件永不被覆盖是否重要?如果是,添加 “从不覆盖”组件。WiX属性: NeverOverwrite="yes" . 记住要测试升级场景!


    永久构件 :如Pavel所述,可以设置永久构件:

    <Component Permanent="yes">
        <File Source="License.rtf" />
    </Component>
    

    空白GUID :另一种方法是设置 blank component GUID . 它本质上意味着 "install and then leave alone" . 不应进行修复或卸载(请记住添加 NeverOverwrite=“是” 如果不应覆盖文件):

    <Component Guid="" Feature="MainApplication">
        <File Source="SubCA.cer" KeyPath="yes" />
    </Component>
    

    只读副本 :我有时会将文件安装到 per-machine path (例如在程序文件下的某个地方)然后将它们复制到 per-user location (在用户配置文件中的某个位置)在应用程序启动时,然后对它们执行操作,这意味着不应删除文件。如果你想做一些改变相关文件的事情(它们需要是可写的),这是很好的。然后,最好将它们与部署问题“分离”(文件根本不会被安装程序操作所干扰—安装程序对它们一无所知)。安装到程序文件的原始只读副本可以卸载(不再需要?).


    其他方法 :您还可以在安装期间使用自定义操作创建此类文件(通常仅限文本文件),您可以在应用程序启动时从网站下载有问题的文件(使文件易于管理和更新/替换?易受连接问题(防火墙等)的攻击,应用程序可以在启动时使用主可执行文件中的“内部默认值”创建文件。毫无疑问,还有一些方法我想不起来了。

        2
  •  1
  •   Pavel Anikhouski    5 年前

    把你的二进制文件放在一个单独的WiX中 component 让它永久。看看这个 thread

    推荐文章