2011-12-30 14 views
3

我有一個應用程序,我正在爲它的安裝程序工作。假設我希望安裝不需要提升,並且我希望應用程序本身永遠不需要提升,並且我希望應用程序(內置於)的更新程序永遠不需要提升應在哪裏安裝應用程序?什麼目標文件夾應該安裝我的應用程序,永遠不會要求UAC提升?

注意事項:

  1. 此應用程序未簽名。
  2. 我很好,如果每個用戶必須單獨安裝在他們的個人資料下。
  3. 我可以在安裝中使用註冊表並完成相同的目標嗎?
  4. 它唯一寫的是建立/配置文件。
  5. .NET 4應用程序。
+0

你問如何從WIX或.NET獲得路徑?兩者不同。 – 2012-01-03 17:07:53

回答

3

通常的選擇是SHGetFolderPath(CSIDL_LOCAL_APPDATA)(Win2K系統及更高版本)或SHGetKnownFolderPath(FOLDERID_LocalAppData)(Vista和更高版本)返回的本地應用程序數據文件夾。

這返回的路徑是這樣的:

  • 「C:\用戶\ ARX \應用程序數據\ Local」(在Vista和更高版本)
  • 「C:\ Documents和Settings \ ARX \本地設置\應用程序數據「(Vista以前)

這是正常在這裏創建的公司名稱和應用程序文件夾,所以你會喜歡的路徑完成了:

」 C:\用戶\ ARX \ AppData的\本地\ BlahSoft \布拉赫應用」

更新

如果你想從淨則需要Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

+0

'SHGetKnownFolderPath'是一個Win32 API,不是.NET和WIX。此外,'FOLDERID_LocalAppData'是應用程序* data *文件夾,而不是已安裝的程序文件夾。 – 2012-01-03 17:06:51

2

你的問題被標記都維克斯和.NET這條道路;兩者對已知文件夾路徑具有不同的語法。用於獲取當前用戶應用程序文件夾的.NET命令是Environment.GetFolderPath(Environment.SpecialFolder.Programs)

如果要安裝到WIX路徑,它具有每個已知文件夾的預定義屬性; [ProgramFilesFolder]是指32位應用程序文件夾,而[ProgramFiles64Folder]指向64位文件夾。

+0

沒有每個用戶安裝的程序目錄,因此每個用戶程序傾向於使用本地應用程序數據目錄。 SpecialFolder.Programs目錄用於開始菜單快捷方式,不適用於程序文件。 [ProgramFilesFolder]和[ProgramFiles64Folder]需要提升。 – arx 2012-01-03 20:49:26

相關問題