1

インストール用のデフォルトのディレクトリがあります。

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFiles64Folder">
    <Directory Id="INSTALLFOLDER" Name="$(var.Manufacturer) $(var.ProductName)"></Directory>
  </Directory>
</Directory>

インストール中に、ユーザーがディレクトリを変更できるようにします。メジャー アップグレード中にユーザーがディレクトリを変更した場合、ディレクトリを手動で取得しINSTALLFOLDERて実際のパスを設定する必要がありますか、それとも自動的に検出する方法はありますか?

4

1 に答える 1

0

これは、Windows インストーラーでは直接サポートされていません。「remember property」パターンを探していると思います。戦略は次のとおりです。

  1. INSTALLFOLDER初期インストール時に、レジストリの既知の場所に値を保存します。
  2. アップグレードを開始するときは、レジストリから値を取得して使用します。

オーサリングは次のようになります。

<!-- Retrieve the property from the registry during AppSearch -->
<Property Id='REMEMBERME'>
  <RegistrySearch Id='RememberProperty'
                Root='HKCU'
                 Key='SOFTWARE\My Company\My App'
                Name='Remembered'
                Type='raw' />
</Property>

<!-- Save the value in the registry for future upgrades -->
<Component Directory='INSTALLFOLDER'>
    <RegistryValue Root='HKCU'
                    Key='SOFTWARE\My Company\My App'
                   Name='Remembered'
                  Value='[REMEMBERME]'
                   Type='string' />
</Component>

Rob Mensching のブログ投稿では、これについてさらに詳しく説明しています。

于 2013-09-11T06:23:44.623 に答える