2011-10-26 125 views
1

我們已經使用WiX創建了一個安裝程序。 在註冊表中,我們將它保存在HKCU下(請參閱示例)。 桌面圖標和一切爲當前用戶安裝。帶有WiX的安裝程序(由Admin預先安裝並由用戶更新)?

<DirectoryRef Id="INSTALLDIR"> 
    <Component Id="CMP_SaveInstallDir" Guid="52e5e617-2c9a-4514-a6b0-055e4adc6a0b"> 
    <RegistryValue Id="MyInstallDirId" KeyPath="yes" Action="write" Root="HKCU" Key="Software\ABC\MyProduct" Name="MyProduct" Value="[INSTALLDIR]" Type="string" /> 
    </Component> 
</DirectoryRef> 

對於升級,我們也使用WiX。我們嘗試找到註冊表項,如果可用,我們安裝升級。 如果安裝完整安裝程序的人安裝升級安裝程序,那麼運行良好。

現在還應該使用安裝程序在某些計算機上預安裝軟件。這意味着,管理員用戶(「Joe Admin」)安裝軟件。 稍後,普通用戶(「Pete用戶」,有權安裝軟件)應能夠安裝升級。

但是由於完全安裝是由「Joe Admin」完成的,因此無法使用升級安裝程序升級「Pete用戶」,因爲在其註冊表(「Pete用戶」的HKCU)中找不到註冊表項。

我認爲這種情況並不罕見,所以我希望有人能幫助我找到解決方案。

在此先感謝!

回答

2

這是一篇文章可以幫助您:http://setupanddeployment.com/installation-environment/peruser-permachine/

基本上,你是不正確地處理的安裝位置。如果您的安裝是針對每臺計算機的(針對所有用戶),則應該僅使用每臺計算機的位置。 HKEY_CURRENT_USER是每個用戶的位置,並在每臺機器安裝程序中使用它是一種不好的做法。因此你的問題。

1

我認爲Cosmin is right和你必須使用每臺機器在這種情況下安裝。

畢竟,如果Joe Admin安裝了該應用程序,那麼只有該用戶纔有權訪問它:桌面圖標,程序文件及其設置存儲在管理員配置文件中。因此,Pete用戶無權訪問應用程序的任何組件。

因此,無論是按每臺機器進行安裝還是允許用戶安裝(不僅僅是升級)。