在安装软件的主要升级版本期间,我正在尝试检索ARPINSTALLLOCATION。
遵循this info,我设法将ARPINSTALLLOCATION设置为自定义路径。
然而,再次检索它是不起作用的。在过去的几天里,我尝试了很多方法,但它仍然默认返回到默认安装路径,而不是自定义路径。
<InstallUISequence>
<AppSearch After="FindRelatedProducts"/>
...
</InstallUISequence>
<Property Id="WIXUI_INSTALLDIR" Value="APPROOTDIRECTORY">
<RegistrySearch Id="FindInstallLocation"
Root="HKLM"
Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[OLDERVERSIONBEINGUPGRADED]"
Name="InstallLocation"
Type="raw" />
</Property>在自定义WixUI_InstallDir UI中,我在CustomInstallDirDlg中包含以下内容
<Control Id="Folder" Type="PathEdit" X="20" Y="90" Width="260" Height="18" Property="WIXUI_INSTALLDIR" Indirect="yes" />备用安装路径在注册表中,但不会在控件中检索和显示。我在这里做错了什么?
-Birkoff
发布于 2010-05-20 12:47:53
从内存中(以及我们所做的)最佳实践是将安装位置保存到我们自己的注册表项中。我们也编写ARPINSTALLLOCATION,但从不尝试读取它。下面是我们的产品代码中的一个示例,它被设计为使用默认的嵌套安装位置(即Program Files\Company\Application\),并且在UI和静默安装、升级等方面都工作得很好。
<!-- Look for previously saved install location -->
<Property Id="APPLICATIONFOLDER" Secure="yes">
<RegistrySearch Id="RegSearch_APPLICATIONFOLDER" Root="HKLM" Key="SOFTWARE\ACME\MyApp" Name="installpath" Type="raw" />
</Property>
<!-- Set UI default for fresh install -->
<Property Id="ApplicationFolderName" Value="ACME\MyApp" />
<!-- Overwrite variable to avoid runtime error -->
<Property Id="WIXUI_INSTALLDIR" Value="APPLICATIONFOLDER" />
<!-- Directory structure(s) -->
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="ACME" Name="ACME">
<Directory Id="APPLICATIONFOLDER" Name="MyApp" DiskId="1">
<!-- ... -->
</Directory>
</Directory>
</Directory>
</Directory>发布于 2010-05-21 00:04:31
谢谢你萨沙。在您的帮助下,我进行了一些更改,现在可以从注册表中检索值。我真的不明白为什么你会设置ARPINSTALLLOCATION,然后不再使用它,所以我像这样修改了我的代码:
<InstallUISequence>
<FindRelatedProducts Before="AppSearch"/>
...
</InstallUISequence>
<Property Id="APPROOTDIRECTORY" Secure="yes">
<RegistrySearch Id="FindInstallLocation"
Root="HKLM"
Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\[OLDERVERSIONBEINGUPGRADED]"
Name="InstallLocation"
Type="raw" />
</Property>
<Property Id="WIXUI_INSTALLDIR" Value="APPROOTDIRECTORY" />安装程序现在可以正确检索以前的安装位置。希望这对其他人也有帮助。
https://stackoverflow.com/questions/2870072
复制相似问题