2010-05-19 59 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

相關問題