0

プロパティを使用してレジストリ エントリの値を設定しています。これは、最初のインストール時にデフォルト値があり、アップグレード時に現在のレジストリ値が使用されるようにするためです。

ユーザーのローカル フォルダーとプログラム フォルダーへのパスを設定するプロパティが必要です。以下のコードが間違っていることはわかっていますが、どうすればよいですか。少なくとも Type 51 カスタム アクションを実行したいと考えていますが、ドキュメントを理解していません。

関連する部分は3つあると思います

<InstallExecuteSequence>
    <Custom Action="SetUserFolder" Before="InstallInitialize"/>
    <Custom Action="SetInstallFolder" Before="InstallInitialize"/>
</InstallExecuteSequence>

カスタム アクション

<CustomAction Id="SetUserFolder" Property="UserFolder" Value="[%USERPROFILE]" />
<CustomAction Id="SetInstallFolder" Property="P_InstallFolder" Value="[%PROGRAMFILES]" />

プロパティ。

<Property Id="P_MyAPPPATH" Value="[P_InstallFolder]MyApp\">
    <RegistrySearch Id="S_MyAppPath" Type="raw" Root="HKCU" Key="Software\MyApp\Settings" Name="MyAppPath"/>
</Property>
<Property Id="P_MyAPPDB" Value="[UserFolder]\MyApp\MyAppData\">
    <RegistrySearch Id="S_MyAPPDB" Type="raw" Root="HKCU" Key="Software\MyApp\Settings" Name="MyAppdb"/>
</Property>
4

1 に答える 1

1

定義しているプロパティを使用する代わりに、いくつかの組み込みプロパティを使用して効果を高めることができる場合があります。

%USERPROFILE の代わりに、LocalAppDataFolderを検討してください。これにより、ユーザーがネットワーク ドメイン上のマシン間をローミングする際に、マシン間でデータがコピーされるのを回避できます。それは必要ないと思いますが、必要な場合はAppDataFolderを使用し、関連するレイテンシに注意してください。

%PROGRAMFILES の代わりに、ProgramFilesFolderを検討してください。これはあなたが意図しているようです。

于 2013-07-06T17:16:00.347 に答える