Wix保持应用程序设置文件升级

时间:2015-11-10 10:44:00

标签: wix windows-installer installer upgrade preserve

我正在使用Wix为我的安装创建.msi。 我希望在msi安装程序进行重大升级时保留配置文件。

这是我的Product.wxs文件中的相关部分: 我的升级属性:

<MajorUpgrade      
  Schedule="afterInstallInitialize"
  DowngradeErrorMessage="A newer version of [ProductName] is already installed." />

根据我的理解,该组件应该阻止删除我的配置文件:

<DirectoryRef Id="INSTALLFOLDER">
  <Directory Id="Content" Name="Content">
  <Component Id="Config" Guid="432FF769-1011-47CF-BFFD-0BF780768C45">      
    <File Source="$(var.MO.Packing.Wpf.TargetDir)\Content\StationConfig.xml" Name ="StationConfig.xml"
      Id="config" KeyPath="yes" />
  </Component>
 </Directory>
</DirectoryRef>

添加我的功能属性,这是相关的:

<Feature Id="MainApplication" Title="Main Application" Level="1">
  <ComponentRef Id="myapplication.exe" />
  ...
  <ComponentRef Id="Config" />
  ...
</Feature>

在创建此逻辑时,我遵循了本指南: http://blogs.msdn.com/b/astebner/archive/2008/10/19/9006538.aspx

另请阅读其他一些问题和来源: How to keep a config file when major upgrade in wix v3.8?

https://msdn.microsoft.com/library/aa371197.aspx

还有一些......

任何人都可以发现问题吗?

如有必要,我会在我的问题中添加任何其他相关数据。

感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

您还没准确说出问题所在,所以我假设配置文件正在被新升级安装中的配置文件替换。

您尝试利用的规则是:

https://msdn.microsoft.com/en-us/library/aa370531(v=vs.85).aspx

如果存在哈希检查,则存在相关规则,但日期规则仍然适用。

因此,您只需安排主要升级顺序为&#34;早期&#34;,例如在InstallInitialize之后。然后,根据文件替换规则,升级将安装在旧产品之上。旧的修改后的配置文件不会被替换。

如果这不起作用,那么可能这些文件(在旧产品中)在首次安装后没有更改,因此您可能只是安装另一个副本而没有丢失任何内容。使用详细日志进行升级并查找文件名,并查看有关覆盖的内容:

msiexec / i [msi文件的路径] / l * vx [文本日志文件的路径]