0

我使用 VS2010 开发了一个应用程序,并使用 IS Limited Edition 进行了设置部署。该应用程序在 XML 文件中提供一些数据,该文件安装在同一文件夹中。如果应用程序在 XML 文件中进行更改,则会将其保存在 virtualStore 中。

我现在使用 VS2015 和 Wix 工具集。该应用程序可以编译,我可以编写一个 WXS 文件。新构建的 MSI 安装应用程序,一切似乎都很好。但现在应用程序无法访问 XML 文件。访问被拒绝。我试图将 MSI 与 Orca 进行比较,但没有看到明显的东西。我不确定这是设置问题还是应用程序本身的问题。

编辑

如果我在新安装中复制“旧”EXE 文件,应用程序可以访问 XML 文件。

感谢您的帮助和提示

4

1 回答 1

2

如果某个程序似乎来自 Windows Vista 之前的程序,以受限用户身份运行,并尝试写入某些仅限机器的位置,则 Windows 可能会将其访问重定向到虚拟存储,作为向后兼容性填充程序的一部分。如果该程序似乎不是来自 Windows Vista 之前的程序,则不会执行重定向。

我相信 Windows 通过读取受支持平台的清单(应用程序清单supportedOS中的元素)来检测程序是否来自 Windows Vista 之前的程序。我的猜测是你的工具链从 VS 2010 到 VS 2015 的变化导致这个元素被添加到你的应用程序的清单中(Windows XP 已经过了它支持的生命周期,因此 Visual Studio 2015 可以隐含地假设你至少支持 Vista)。

您可能能够覆盖清单,但实际上您应该修复您的程序以不尝试写入每台机器的位置。理想情况下,您应该使用诸如 LocalAppData 文件夹之类的位置,尽管为了向后兼容,至少从虚拟存储中读取旧文件可能会有好处。

于 2015-12-29T13:48:25.590 回答