1

インストール用の .msi の作成に Wix を使用しています。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

他の質問と情報源もお読みください: Wix v3.8 でのメジャー アップグレード時に設定ファイルを保持する方法は?

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

そしてもう少し...

誰でも問題を特定できますか?

必要に応じて、他の関連データを質問に追加します。

どんな助けでも大歓迎です!

4

1 に答える 1

2

問題が何であるかを正確に述べていないので、構成ファイルが新しいアップグレード インストールのものに置き換えられていると仮定します。

利用しようとしているルールは次のとおりです。

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

ハッシュ チェックがある場合は関連するルールがありますが、日付ルールは引き続き適用されます。

そのため、InstallInitialize の後など、メジャー アップグレードのシーケンスが「早期」になるように調整する必要があります。次に、アップグレードは、ファイル置換規則に従って、古い製品の上にインストールされます。古い変更済み構成ファイルは置き換えられません。

これが機能しない場合は、(古い製品の) ファイルが最初にインストールされた後に変更されていない可能性があるため、別のコピーをインストールしただけで、何も失われていない可能性があります。詳細なログを使用してアップグレードを実行し、ファイル名を探して、上書きについての内容を確認します。

msiexec /i [msi ファイルへのパス] /l*vx [テキスト ログ ファイルへのパス]

于 2015-11-10T18:49:08.030 に答える