在使用Wix的卸载过程中如何停止删除文件

时间:2019-04-08 08:23:30

标签: wix installer

在卸载我的应用程序时,我想将Wix设置配置为,以删除在安装过程中添加的一些文件。似乎卸载程序从MSI文件中删除了所有最初安装的文件。我怎么做?

这是我希望永久保存的文件

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

我已经使用WixIIsExtension.dll将这些证书安装到Windows应用商店中。

2 个答案:

答案 0 :(得分:1)

将您的二进制文件放在单独的WiX component中,并将其永久保存。也来看看这个thread

答案 1 :(得分:1)

  

覆盖 :文件永远不会被覆盖很重要吗?如果是这样,请添加   “永不覆盖”您的组件。 WiX属性: NeverOverwrite="yes" 。记住要测试升级方案!


永久组件 :如Pavel所述,您可以将组件设置为永久组件:

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

空白GUID :另一种方法是设置 blank component GUID 。它实际上是指"install and then leave alone"。请勿进行任何修复或卸载(如果绝对不要覆盖文件,请记住添加 NeverOverwrite="yes"

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

只读副本 :我有时将文件安装到 per-machine path (例如,程序文件下的某个位置),然后在应用程序启动时将它们复制到 per-user location (在用户配置文件中的某个位置),然后对它们进行操作,这些操作都要求不要删除文件。如果您想做一些更改有问题的文件(它们必须是可写的),这很好。这样最好将它们从部署问题中解脱出来(文件完全不会被安装程序的操作所干扰-安装程序不了解它们)。不过,可以卸载已安装到程序文件中的原始只读副本(不再需要?)。


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