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

问题描述 投票:2回答:2

卸载我的应用程序时,我想将Wix设置配置为不删除在安装过程中添加的几个文件。看起来卸载程序会删除最初从MSI文件安装的所有文件。我怎么做?

这是我希望永远保留的文件

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

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

wix installer
2个回答
1
投票

覆盖:文件永远不会被覆盖是否重要?如果是这样,请在组件中添加“Never Overwrite”。 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(用户配置文件中的某个位置),然后对它们执行操作,这需要文件不应该删除。如果你想做一些改变有问题文件的东西(它们需要是可写的),这是很好的。然后最好从部署问题“解开”它们(文件不会被安装程序操作干扰 - 安装程序不知道它们)。可以卸载安装到程序文件的原始只读副本(不再需要?)。


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


1
投票

将您的二进制文件放在单独的WiX component中并使其永久化。看看这个thread也是如此

© www.soinside.com 2019 - 2024. All rights reserved.