2013-04-23 77 views
1

我正在使用WixUI_Advanced實現一個單一程序包,該程序包支持每個用戶使用&每臺機器在WiX中的安裝。當我選擇爲此機器上的所有用戶安裝 - [ProgamFilesFolder]評估爲AppData\Local\Programs而不是C:\Program Files| ProgramFilesFolder |評估爲AppData Local Programs

請注意,只有在目標目錄選擇後纔會出現UAC提示升級 - 這是我認爲由於UAC虛擬化導致此問題的原因。

我怎樣才能得到真正的Program Files目錄?
另一個解決方法可能是 - 在下一個按鈕調用UAC提升提示的功能選擇對話框後,更改對話框順序以顯示目錄選擇對話框。
或者在[ProgramFilesFolder]針對目標位置進行評估之前提示進行UAC提升,但僅在用戶選擇了每臺計算機的安裝時進行評估。

更新:目前我使用:[%ProgramFiles] - 環境變量(休息時安裝的x86 x64上的)

更新II:我現在用在ProgramFilesDir的註冊表鍵值:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

+0

您可以使用.dontnetinstaller工具將msi轉換爲exe,然後在您執行安裝程序後,UAC提示將始終顯示。 – 2013-04-23 19:15:16

+0

否定 - 如果用戶選擇安裝每臺機器,則UAC提示應該出現。 – 2013-04-23 19:25:36

+0

是的。只有當用戶在服務器上沒有管理權限時,UAC纔會出現 – 2013-04-24 04:17:36

回答

1

WixUI_Advanced取決於Directory元素與Id='APPLICATIONFOLDER'配置應用程序的安裝位置。 ALLUSERS屬性然後用於配置路徑以安裝到正確的位置。很多這些在WixUI_Advanced Dialog Set幫助主題中詳述。這些都不會改變ProgramFilesFolder的值。

PS:[%ProgramFiles]環境是訪問ProgramFilesFolder的一種不太可靠的方式。相反,您可以使用[ProgramFilesFolder]來獲取Windows安裝程序中的默認值。

+0

<自定義操作= 「Overwrite_WixSetDefaultPerMachineFolder」 經過= 「WixSetDefaultPerMachineFolder」/> <自定義操作= 「Overwrite_WixSetDefaultPerMachineFolder」 經過= 「WixSetDefaultPerMachineFolder」/> 我正在使用這個。 – 2013-04-23 20:43:52

+0

是的,這會弄亂WixUI_Advanced的設計。我建議將WixAppFolder屬性設置爲文檔來控制默認值。 – 2013-04-23 20:46:41

+0

[%ProgramFiles]是一個問題 - 在x64上安裝x86時。 – 2013-04-23 20:59:34