我的Windows窗体应用程序上有一个WiX安装程序。我总是进行重大升级,因此每个构建都将作为安装程序(新客户)和更新程序(以前的客户)。我遇到的问题是安装程序正在删除以前由安装程序安装并随后修改的注册表项和配置文件。
例如,在初始安装时,我在C:\ programdata \ myConfig.xml中放入一个文件。安装后,用户通过将其替换为config.xml来修改文件。当我的安装程序在升级时运行时,安装程序将删除此文件。当安装程序运行且文件不存在时,它会正确安装myconfig.xml。
我希望安装程序永远不会覆盖现有文件,也不要删除它。
<DirectoryRef Id="myFolder">
<Component Id="CMP_ConfigFile" Guid="{some guid}" NeverOverwrite="yes">
<File Id="myConfiguration.xml" Source="RefFiles\myConfig\xml" KeyPath="yes"/>
</Component>
</DirectoryRef>
以上是我的WiX安装程序的代码块。我的注册表项有同样的问题。 WiX正在升级时删除它们。
<Component Id="RegistryEntriesOne" Guid="{some guid}" Directory="TARGETDIR" NeverOverwrite="yes" >
<RegistryKey Root="HKLM" Key="SOFTWARE\myCompany\myApp" Action="create">
<RegistryValue Type ="string" Name="ConfigurationFilePath" Value="C:\ProgramData\myConfig.xml" KeyPath="yes"/>
</RegistryKey>
</Component>
思考? 库尔特
答案 0 :(得分:0)
您需要将Permanent属性添加到组件并将其设置为yes以防止组件被卸载
<Component Id="CMP_ConfigFile" Guid="{some guid}" NeverOverwrite="yes" Permanent="yes">
<File Id="myConfiguration.xml" Source="RefFiles\myConfig\xml" KeyPath="yes"/>
</Component>