2011-11-10 26 views
2

可以構建MSI安裝程序,它可以爲非管理員用戶(將文件複製到非管理員用戶的目錄)執行每用戶安裝,但也可以複製文件到Program Files或其他僅限管理員的目錄中?使用NSIS,存在一個UAC插件,它允許一些步驟作爲普通用戶運行,其他步驟以提升的特權運行。 MSI存在這樣的事情,還是有一些方法可以在獲得管理權限的同時保留原始用戶上下文?Windows安裝程序,包括每個用戶和管理部分

回答

2

不,這是不可能的。安裝要麼在用戶上下文中運行,要麼在系統上下文中運行。

但它並不妨礙您將某些文件複製到用戶的配置文件中。這些文件將繼承在文件夾上設置的默認權限。默認值是對用戶,系統和管理員組的完全訪問權限。


雖然技術上可行,但我不建議使用它。考慮一臺具有多個用戶的計算機:其中一個用戶安裝MSI軟件包,他們將文件安裝在用戶的配置文件中。另一位用戶登錄此計算機並從「開始」菜單啓動您的應用程序:用戶配置文件中沒有文件,而您的應用程序期望它們在那裏。

解決此問題的最佳方法是將要進入用戶配置文件的文件安裝到Program Files。在您的應用程序第一次啓動時,它會將這些文件複製到用戶的配置文件中。因此,多用戶計算機的每個用戶將能夠使用您的應用程序。

如果這些數據要在用戶之間共享,請考慮將它們安裝到ProgramData中,CommonAppDataFolder property。通過這種方式,這些文件將對所有計算機用戶可見並且可讀。然而,只有安裝應用程序的用戶才具有寫入權限,因此安裝人員應修改ProgramData中的應用程序文件夾的權限,爲其他用戶提供寫入權限。

+0

同意答案:使用安裝程序複製每臺計算機上的文件,然後讓應用程序在首次啓動時將其複製到用戶配置文件。然後在HKCU中設置一個標誌,表明已經爲該用戶完成了複製操作。 但是,說安裝程序在用戶上下文或提升的系統上下文中運行會有點不準確 - 它實際上在兩種情況下運行,但在安裝順序的不同時間運行。簡而言之,GUI運行在用戶上下文中,而文件副本以提升的權限運行。如果需要,我可以添加更長的解釋作爲單獨的答案。這裏空間不足 –

+0

@Glytzhkof我的意思是安裝過程(複製文件,編寫註冊表項)在當前用戶上下文中,在每個用戶的安裝中,或者在升級的系統上下文中,在每個機器的安裝中運行。 GUI嚮導始終在當前用戶上下文中運行。 –

+0

您的建議存在的問題以及我嘗試按照我所描述的原因執行的原因是,所涉及的文件必須放在用戶的應用程序數據目錄中(這是一個MS Word全局模板,Word在用戶的STARTUP目錄中查找這些)。 – alanc10n

相關問題