我用VS2010开发了一个应用程序,用开发了一个安装部署。应用程序在安装在同一个文件夹中的XML文件中提供了一些数据。如果应用程序正在对XML文件进行更改,则将其保存在virtualStore中。
我现在使用的是VS2015和。应用程序可以编译,我能够编码一个WXS文件。新构建的MSI安装了这个应用程序,一切看起来都很好。但是现在应用程序无法访问XML文件。访问被拒绝。我试着把MSI和Orca进行比较,但是没有看到明显的东西。我不确定,这是安装问题还是应用程序本身的问题。
编辑
如果我在新安装中复制“旧”EXE文件,应用程序可以访问XML文件。
谢谢你的帮助和暗示
发布于 2015-12-29 13:48:25
如果某个程序似乎来自Windows Vista之前,是以有限用户的身份运行,并且试图写入特定的机器专用位置,Windows可能会将其访问虚拟存储的权限重定向为向后兼容空间的一部分。如果程序似乎不是Windows之前的程序,则不执行重定向。
我相信Windows通过读取支持平台的清单( supportedOS元素在应用清单中)来检测程序是否来自Windows之前。我的猜测是,您的工具链从VS 2010到VS 2015的更改导致将此元素添加到应用程序的清单中(Windows XP已超过其受支持的生存期,因此Visual 2015可以隐含地假定您正在支持至少Vista)。
您可能可以重写清单,但实际上您应该修复您的程序,使其不试图写入每台机器的位置。理想情况下,您应该使用像LocalAppData文件夹这样的位置,尽管为了向后兼容,至少从Virtual读取旧文件可能有好处。
https://stackoverflow.com/questions/34502918
复制相似问题