2009-02-09 17 views
2

在AppData文件夾中安裝應用程序是否可以接受? Google Talk & Chrome未安裝在默認的Program Files文件夾中。他們被安裝在用戶的AppData文件夾中。微軟與ClickOnce做同樣的事情...Google和Microsoft在AppData文件夾中安裝應用程序,爲什麼不是我?

我想我的應用程序自我更新,但是當安裝在Program Files文件夾中時,它會失敗。在Windows Vista(2008和Seven)下,應用程序無法寫入Program Files文件夾。我明白UAC是負責任的,但它阻止了我的應用程序自我更新。

如果我想部署在AppData文件夾中解決安全問題,如何告訴我的MSI安裝項目安裝在AppData?任何想法?

謝謝!

UPDATE:我無法使用ClickOnce,因爲它需要證書。我不想花200美元/年購買證書。

+0

您可以創建自己的出版證書雖然過程有些涉及:http://theruntime.com/blogs/jacob/archive/2006/12/04/創建一個域名發佈者證書的小內部軟件shop.aspx – 2009-02-12 18:51:25

回答

2

你是誤會了一個關鍵點:

據我所知,UAC是負責

這是不正確的。如果您以標準用戶身份運行,則在XP中也適用相同的規則,在許多企業環境中都是如此。這不是UAC阻止:這是Windows設置文件夾權限的方式,這是設計。

你有點回答你自己的問題:如果你想安裝到AppData文件夾,只需使用ClickOnce安裝程序。

+0

ClickOnce強制使用證書。我無法承擔200美元/年的證書... – Martin 2009-02-09 21:03:10

+0

您可以使用自簽名證書嗎? – saschabeaumont 2009-02-09 21:21:22

1

你正在使用什麼自我更新框架?

ClickOnce的原始目標之一是成爲一個非影響力的安裝方法。安裝只不過是一個XCOPY,實際上保證不會混淆系統的其他部分。這是MS選擇程序文件上的AppData的原因之一。如果你只將文件寫入AppData,那麼你很可能會損壞整個系統。

如果您的自定義框架想要自我更新,並且只有一個用戶,影響較小的安裝,那麼AppData可能不是一個不錯的選擇。實際上,Users目錄下的任何內容都比Program Files更好。

0

確實,但我在Vista上觀察到一個非常奇怪的行爲,我在我的msi中使用了appdatafolder屬性,它需要管理員權限才能安裝,現在當uac打開並且標準使用運行應用程序時,uac顯示登錄框並且在我們提供相同的應用程序安裝時詢問管理員密碼,但不安裝在管理員應用程序數據文件夾中安裝的標準用戶的應用程序數據文件夾中。

5

的ClickOnce delployments可以從VS 2008是無符號起

1

在Windows 7中,新的MSI 5.0支持「每用戶」真正的安裝不需要UAC提升 - 現在有一個每用戶計劃文件目錄。這裏的PDC談的更多信息:

http://channel9.msdn.com/pdc2008/PC42/

相關問題