2010-05-19 61 views
0

我试图在安装主要升级版本的软件期间检索ARPINSTALLLOCATION。我无法检索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> 

在自定义UI WixUI_InstallDir我有这样的CustomInstallDirDlg

<Control Id="Folder" Type="PathEdit" X="20" Y="90" Width="260" Height="18" Property="WIXUI_INSTALLDIR" Indirect="yes" /> 

另一种选择安装路径是在注册表中,但它不是检索并在控制中。我在这里做错了什么?

-Birkoff

回答

1

从内存(和我们做什么),最好的做法是安装位置保存到自己的注册表项。我们也写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> 
2

谢谢萨沙。我们可以帮助您进行一些更改,现在可以从注册表中检索值。我真的不明白,你为什么会设置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" /> 

,设定已经正确检索以前的安装位置。希望这对任何人都有帮助。

+0

您也可以搜索组件的关键路径,那么您不必指定注册表路径 – 2016-02-18 10:24:48

相关问题