私たちは製品のmsiを作成するためにwix 3.9を使用します。私たちの目標:msiで設定ファイル(.txt-file)を配信したい。設定ファイルがインストールフォルダにすでに存在する場合、そのファイルはアップグレードによって上書きされません。残念ながら、Wixはアップグレード時に設定ファイルを削除します。設定ファイルをMajorUpgradeに保存するにはどうしたらいいですか?
製品要素:
<Product Id="*" Name="$(var.AppName) V$(var.Version) $(var.TargetBuild)" Language="1033" Version="$(var.Version)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
$(var.UpgradeCode)
は静的であり、変更されることはありません。
アップグレードタグ:
<Component Id="ConfigComponent" NeverOverwrite="yes" Guid="GUID-HERE">
<File Id="ConfigOutput" KeyPath="yes" Name="MyConfig.config" Source="MyConfig.config.bak"/>
</Component>
はまた、私は、アプリケーション自体によって生成されたファイルを削除するためにRemoveFolderEx使用:
<MajorUpgrade DowngradeErrorMessage="A newer version of $(var.AppName) is already installed." AllowSameVersionUpgrades="yes" />
<Upgrade Id="$(var.UpgradeCode)">
<UpgradeVersion Minimum="1.0.0"
IncludeMinimum="yes"
OnlyDetect="yes"
Maximum="$(var.Version)"
IncludeMaximum="yes"
Property="PREVIOUSVERSIONSINSTALLED" />
</Upgrade>
<Property Id="PREVIOUSVERSIONSINSTALLED" Secure="yes" />
は、ここで設定ファイルです。しかし、私がこのブロックをコメントアウトしても、問題はまだ発生します。しかし、私は完全のためにコードブロックを表示したい:
<Component Id="RemoveAll" Guid="MYGUID">
<RemoveFile Id="RemoveAllFilesOnUninstall" Directory="APPLICATIONFOLDER" Name="*.*" On="uninstall" />
<RemoveFolder Id="RemoveAllFoldersOnUninstall" Directory="APPLICATIONFOLDER" On="uninstall" />
<RegistryValue Root="HKLM" Key="SOFTWARE\$(var.Manufacturer)\$(var.AppName)" Name="Path" Type="string" Value="[APPLICATIONFOLDER]" KeyPath="yes" />
<util:RemoveFolderEx On="uninstall" Property="APPLICATIONFOLDER" />
</Component>
リプロ:まず、我々はソフトウェアをインストールし、期待通りにファイル「MyConfig.config」とは、アプリケーションフォルダに表示されます。その後、この設定ファイルの内容を変更します。次に、2番目の.msiファイルを作成して実行します。更新が行われると、すべてのファイルが期待どおりに上書きされます。しかし、私たちは今、インストールフォルダに 'MyConfig.config'というファイルがありません。
UPDATE:予想通り
属性Permanent="yes"
も動作しません。設定ファイルは、まだアップグレード時に削除されます。
<Component Id="ConfigComponent" Permanent="yes" NeverOverwrite="yes" Guid="GUID-HERE">
<File Id="ConfigOutput" KeyPath="yes" Name="MyConfig.config" Source="MyConfig.config.bak"/>
</Component>
これはWindowsインストーラ自体に問題があるように見える、このリンクをお読みください。 https://community.flexerasoftware.com/showthread.php?96157-The-truth-the-whole-truth-about-quot-をNever-overwrite-quot-and-quot-Permanent-quot-files – Isaiah4110
このファイルが不足しているこの問題は、RemoveExistingProductsのスケジュール方法によるものです。 REPをInstallFinalizeの直前に移動すると、この問題は解決しますが、その変更には他の考慮事項が必要です - https://msdn.microsoft.com/en-us/library/windows/desktop/aa371197%28v=vs。 85%29.aspx – jbudreau
@jbudreau:手順2について:msiが以前の設定ファイルを削除するのはなぜですか?以前のインストールでは、属性NeverOverwrite = "yes"も含まれています。そのため、私はconfigファイルが削除されないことを期待しています。 – Simon