2009-04-29 126 views
4

我有一個帶有WiX安裝程序的普通舊式Windows Forms應用程序,並且它可以像您期望的那樣安裝在Program Files文件夾中的所有用戶。應用程序使用System.AddIn framework託管加載項。System.AddIn管道應該安裝在哪裏?

因爲System.AddIn框架需要寫一些外接管線文件夾(AddInsAddInSideAdaptersAddInViewsContractsHostSideAdapters)我不知道安裝的加載項的最佳場所。我無法安裝到Program Files,因爲用戶將沒有寫入權限,並且如果我安裝到用戶的Application Data文件夾,則不會爲任何其他用戶安裝加載項。

我意識到這裏存在相互矛盾的要求(用戶不能混淆其他用戶的加載項,需要爲所有用戶安裝加載項,並且所有用戶都需要寫入權限),但什麼是最好的切實可行的路線?

很遺憾,System.AddIn框架需要編寫的文件不能單獨存儲在Application Data中,但這似乎是框架的限制。

回答

2

我知道這個問題被問得很久以前,但...

你試過Environment.SpecialFolder.CommonApplicationData?

在Vista/Windows 7中,此文件夾是:%ProgramData%。我不是100%確定它在Windows XP中的含義,但它可能是%ALLUSERSPROFILE%

在任何情況下,該文件夾應具有讀/寫權限,並且對所有用戶都是相同的。

不要忘了創建子文件夾爲您的公司/應用程序名稱:

string companyName = "My Company"; 
string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); 
string path = Path.Combine(folderPath, companyName); 
0

呃,你不能同時擁有「所有用戶」和「沒有海拔」。我不完全知道System.AddIn框架是什麼,但是如果它打算從用戶進程(又名:不是系統服務,如進程)運行,那麼它必須在用戶配置文件下編寫(ApplicationDataFolder是一個很好的地方) 。這是所有應用程序必須遵循的非常基本的規則。基於我對你評論的理解有限,聽起來像System.AddIn框架正在打破這一規則。

但我可能只是失去了一些東西。

+0

我認爲我們缺少同樣的事情,因此我的問題。 :) – GraemeF 2009-05-01 14:10:48

1

仍然希望得到更好的答案,但我認爲唯一的方法就是將管道安裝到程序文件並在每次運行應用程序時複製到應用程序數據。然後,您可以將System.AddIn框架指向Application Data中的管道副本,以便僅嘗試寫入用戶配置文件。

+0

我認爲你的方法是正確的。只要沒有現有的AddIns,就可以將「默認」AddIns複製到用戶的應用程序數據中。 – VVS 2009-05-25 20:57:26

0

您是否需要使用WiX安裝程序?將您的應用程序部署爲clickonce解決方案將會將所有管道放入用戶應用程序數據文件夾中。這樣每個用戶都可以保留自己的模塊列表。

這也將解決可寫文件夾限制。

+0

如果每個用戶安裝它,Windows安裝程序也是如此,但那不是我要找的。 – GraemeF 2010-08-25 15:00:49