首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.AddIn管道应该安装在哪里?

System.AddIn管道应该安装在哪里?
EN

Stack Overflow用户
提问于 2009-04-29 09:21:16
回答 4查看 534关注 0票数 4

我有一个普通的带有WiX安装程序的Windows Forms应用程序,正如您所期望的那样,它为所有用户安装到Program Files文件夹中。应用程序使用System.AddIn framework托管外接程序。

因为System.AddIn框架需要写入一些插件管道文件夹(AddInsAddInSideAdaptersAddInViewsContractsHostSideAdapters),所以我不知道安装插件的最佳位置。我无法安装到Program Files,因为用户没有写入权限,如果我安装到用户的Application Data文件夹,则不会为任何其他用户安装外接程序。

我意识到这里有相互冲突的要求(用户不能搞乱其他用户的插件,插件需要为所有用户安装,所有用户都需要权限才能写入),但最好的实际方法是什么?

遗憾的是,不能在Application Data中单独存储System.AddIn框架需要编写的文件,但这似乎是该框架的一个限制。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-17 05:55:25

我知道这个问题很久以前就有人问过了,但是...

你试过Environment.SpecialFolder.CommonApplicationData?吗?

在Vista/Windows7中,这个文件夹是:%ProgramData%。我不能100%确定它在Windows XP中是什么,但它很可能是%ALLUSERSPROFILE%

在任何情况下,此文件夹都应具有读/写权限,并且对所有用户都是相同的。

不要忘记为您的公司/应用程序名称创建子文件夹:

代码语言:javascript
复制
string companyName = "My Company";
string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
string path = Path.Combine(folderPath, companyName);
票数 2
EN

Stack Overflow用户

发布于 2009-05-01 20:09:24

我仍然希望得到一个更好的答案,但我认为唯一的方法是在每次应用程序运行时将管道安装到Program Files并复制到Application Data。然后,您可以将System.AddIn框架指向应用程序数据中的管道副本,以便它只尝试写入用户配置文件。

票数 1
EN

Stack Overflow用户

发布于 2009-04-30 14:35:01

嗯,你不能同时拥有“所有用户”和“无提升”。我不确切地知道System.AddIn框架是什么,但如果它打算从用户进程(也就是:不是像进程那样的系统服务)运行,那么它必须在用户配置文件(ApplicationDataFolder是一个很好的地方)下编写。这是所有应用程序都必须遵循的一个非常基本的规则。根据我对您的评论的有限理解,听起来System.AddIn框架正在打破这条规则。

但我可能只是遗漏了什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/801579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档