WiX:在 ProgramFilesFolder 中安装应用程序会引发 AccessDenied 异常。为什么?
我有一个 C# 应用程序和一个 WiX 项目,用于将此应用程序安装在 ProgramFilesFolder 中。我的应用程序有一个使用 dll 文件的查看器元素。如果我使用普通用户权限启动应用程序,则会收到错误,并且应用程序中的查看器元素不会加载,并显示错误消息:我的查看器元素无法访问 dll 文件。作为管理员用户,它工作正常。在我的 WiX 项目中,我设置了 perMachine 属性,并且我的应用程序中使用了其他几个 dll 文件,但我没有收到此类错误。
如果我将应用程序安装在 ProgramFilesFolder 之外,则没有问题。 我应该怎么办?在VS2010中,我可以为每个文件设置构建操作和复制到输出目录,我是否必须设置一些特殊的东西?或者 WiX 的文件元素中是否有一个设置访问属性的选项?
I have a C# application and a WiX project to install this application in the ProgramFilesFolder. My application has a viewer element that uses a dll file. If i start the application with normal user rights i get an error and the viewer element in my application does not load with the error message that my viewer element has no access to the dll file. As an admin user it works fine. In my WiX project i set the property perMachine and i have several other dll files used within my application and i dont get such error.
If i install my application outside the ProgramFilesFolder there is no problem.
What should i do? In VS2010 i can set Build Action and Copy to output directory for each file, do i have to set something special? Or is there in the File element of WiX an option to set access properties?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您遇到此行为是因为应用程序的一部分(查看器元素)需要安装文件夹中的写入权限。
解决方案是通过应用程序清单请求提升。这样您的应用程序始终以管理员权限运行。
You are encountering this behavior because a part of your application (the viewer element) needs write permissions in the installation folder.
A solution is to request elevation through your application manifest. This way your application always runs with Administrator privileges.
安装或使用应用程序时是否抛出异常?
如果是后者,我唯一的猜测是相关 DLL 试图将某些内容写入受保护的文件夹之一,在本例中为 Program Files。您应该消除它,使其在没有管理员权限的情况下工作。
Does it throw exception when installing or when using the application?
If the latter, the only guess I have is that the DLL in question tries to write something into one of the protected folders, Program Files in this case. You should eliminate that to make it work without admin privileges.