簡體   English   中英

應該在哪里安裝System.AddIn管道?

[英]Where should the System.AddIn pipeline be installed?

我有一個帶有WiX安裝程序的普通舊Windows窗體應用程序,它可以像所期望的那樣為所有用戶安裝到Program Files夾。 應用程序使用System.AddIn框架托管加載項。

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

我意識到這里存在沖突的要求(用戶不能弄亂其他用戶的插件,需要為所有用戶安裝插件,所有用戶都需要寫入權限)但是最好的實際路線是什么?

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

我知道很久以前就問過這個問題,但......

你試過Environment.SpecialFolder.CommonApplicationData嗎?

在Vista / Windows 7中,此文件夾為: %ProgramData% 我不是百分之百確定它在Windows XP中是什么,但它可能是%ALLUSERSPROFILE%

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

不要忘記為您的公司/應用程序名稱創建一個子文件夾:

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

仍然希望得到更好的答案,但我認為唯一的方法是將管道安裝到Program Files並在每次運行應用程序時復制到Application Data。 然后,您將System.AddIn框架指向Application Data中的管道副本,因此它只會嘗試寫入用戶配置文件。

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

這也將繞過可寫文件夾限制。

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

但我可能只是遺漏了一些東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM