Installation 我无法检索ARPINSTALLLOCATION,因此我们知道在何处安装新版本
我试图在安装软件的主要升级版本期间检索ARPSInstallLocation 接下来,我设法将arpsInstallLocation设置为自定义路径 但是,再次检索它不起作用。在过去的几天里,我尝试了很多方法,但它会保持默认的安装路径,而不是自定义路径Installation 我无法检索ARPINSTALLLOCATION,因此我们知道在何处安装新版本,installation,wix,location,Installation,Wix,Location,我试图在安装软件的主要升级版本期间检索ARPSInstallLocation 接下来,我设法将arpsInstallLocation设置为自定义路径 但是,再次检索它不起作用。在过去的几天里,我尝试了很多方法,但它会保持默认的安装路径,而不是自定义路径 <InstallUISequence> <AppSearch After="FindRelatedProducts"/> ... </InstallUISequence> <Property I
<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\u InstallDir UI中,我在CustomInstallDirDlg中有这个
<Control Id="Folder" Type="PathEdit" X="20" Y="90" Width="260" Height="18" Property="WIXUI_INSTALLDIR" Indirect="yes" />
替代安装路径位于注册表中,但未在控件中检索和显示。我做错了什么
-Birkoff从内存(以及我们所做的)最佳实践是将安装位置保存到我们自己的注册表项中。我们也写arpsInstallLocation
,但从不尝试从中读取。下面是我们生产代码中的一个示例,它设计用于默认的嵌套安装位置(即程序文件\公司\应用程序\
),在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>
从内存(以及我们所做的)最佳实践是将安装位置保存到我们自己的注册表项中。我们也写arpsInstallLocation
,但从不尝试从中读取。下面是我们生产代码中的一个示例,它设计用于默认的嵌套安装位置(即程序文件\公司\应用程序\
),在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>
谢谢你,萨沙。在您的帮助下,我可以进行一些更改,现在可以从注册表中检索该值。我真的不明白为什么要设置ARPSInstallLocation,以后不再使用它,所以我修改了我的代码如下:
<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" />
...
安装程序现在可以正确检索以前安装的位置。希望这对其他人也有帮助。谢谢萨沙。在您的帮助下,我可以进行一些更改,现在可以从注册表中检索该值。我真的不明白为什么要设置ARPSInstallLocation,以后不再使用它,所以我修改了我的代码如下:
<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" />
...
安装程序现在可以正确检索以前安装的位置。希望这对其他人也有帮助。您也可以搜索组件的键路径,然后不必指定注册表路径您也可以搜索组件的键路径,然后不必指定注册表路径