我正在使用“属性”来设置注册表项的值。这是在第一次安装时我有一个默认值,然后在升级时使用当前注册表值。
我需要一个属性来设置用户本地文件夹和程序文件夹的路径。我知道下面的代码是错误的,但我该怎么做。我认为至少我想做一个Type 51自定义动作,但不理解文档。
我相信有三个相关部分
<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>
答案 0 :(得分:1)
作为使用您定义的属性的替代方法,您可以使用一些内置属性来更好地发挥作用。
而不是%USERPROFILE,请考虑LocalAppDataFolder。这将避免在用户在网络域上的计算机之间漫游时在计算机之间复制数据。我猜你不需要,但如果你这样做,请使用AppDataFolder,并注意所涉及的延迟。
考虑ProgramFilesFolder而不是%PROGRAMFILES。这似乎是你想要的。