首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我无法检索ARPINSTALLLOCATION,因此我们知道在哪里安装新版本

我无法检索ARPINSTALLLOCATION,因此我们知道在哪里安装新版本
EN

Stack Overflow用户
提问于 2010-05-20 07:13:55
回答 2查看 1.7K关注 0票数 0

在安装软件的主要升级版本期间,我正在尝试检索ARPINSTALLLOCATION。

遵循this info,我设法将ARPINSTALLLOCATION设置为自定义路径。

然而,再次检索它是不起作用的。在过去的几天里,我尝试了很多方法,但它仍然默认返回到默认安装路径,而不是自定义路径。

代码语言:javascript
复制
<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中包含以下内容

代码语言:javascript
复制
<Control Id="Folder" Type="PathEdit" X="20" Y="90" Width="260" Height="18" Property="WIXUI_INSTALLDIR" Indirect="yes" />

备用安装路径在注册表中,但不会在控件中检索和显示。我在这里做错了什么?

-Birkoff

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-20 12:47:53

从内存中(以及我们所做的)最佳实践是将安装位置保存到我们自己的注册表项中。我们也编写ARPINSTALLLOCATION,但从不尝试读取它。下面是我们的产品代码中的一个示例,它被设计为使用默认的嵌套安装位置(即Program Files\Company\Application\),并且在UI和静默安装、升级等方面都工作得很好。

代码语言:javascript
复制
    <!-- 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>
票数 1
EN

Stack Overflow用户

发布于 2010-05-21 00:04:31

谢谢你萨沙。在您的帮助下,我进行了一些更改,现在可以从注册表中检索值。我真的不明白为什么你会设置ARPINSTALLLOCATION,然后不再使用它,所以我像这样修改了我的代码:

代码语言:javascript
复制
<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" />

安装程序现在可以正确检索以前的安装位置。希望这对其他人也有帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2870072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档