ユーザー構成がレジストリに保存されている古いアプリケーションを維持しています。アンインストール時に残ります。現在、WiX でインストーラーを書き直しています。
レジストリに何もない場合、インストーラはデフォルト値をレジストリに追加する必要があります。それ以外の場合は、既存の値をそのままにしておく必要があります。
WiXでこれを行う方法を考えていました。そして、私が思いついた解決策はやや面倒です:
<Property Id="MY_PROPERTY">
<RegistrySearch Root="HKLM" Key="SOFTWARE\MyProduct" Name="MyProperty" Type="raw" />
</Property>
<CustomAction Id="ca.SetDefaultValue" Property="MY_PROPERTY" Value="DefaultValue" />
<InstallExecuteSequence>
<Custom After="RegistrySearch" Action="ca.SetDefaultValue">Not MY_PROPERTY</Custom>
</InstallExecuteSequence>
<Component Id="c.Registry">
<RegistryValue Root="HKLM" Key="SOFTWARE\MyProduct" Name="MyProperty" Type="string" Value="[MY_PROPERTY]" />
</Component>
そのため、レジストリ検索を実行して古い値を見つけてください。設定されていない場合は、スケジュールされたカスタム アクションを使用してデフォルト値に設定します。次に、「いつものように」値を作成します。
これを行うためのよりスムーズな方法を考えられる人はいますか?
Installed
以前の、現在アンインストールされているバージョンによって取り残された値がそこにある可能性があるため、便利な変数を使用できないことに注意してください。