1

我正在使用 VS2015 为我的服务构建安装解决方案。我希望程序以 64 位运行。在解决方案配置属性中,我将所有项目作为配置 Debug、Platform Any CPU、Deploy 空白。

msi 安装程序要求我选择要安装的文件夹,然后我选择 Program Files\My Company Name

但是,当我尝试在 Windows 8.1 64 位操作系统上安装时,安装程​​序会创建一个文件夹 Program Files (x86)\My Company Name

为什么?

4

2 回答 2

3

很可能是因为您生成的 MSI 是 32 位 MSI,它只能访问32 位文件夹路径。因此,操作系统会自动执行重定向。

您可以使用免费工具 Orca 检查 MSI 包类型,该工具可在 Windows SDK 中找到。MSI 的包类型信息可在“摘要信息”菜单中找到。或者您也可以生成详细的安装日志,您很可能会在其中找到有关路径重定向的信息。

生成详细日志的命令行:

msiexec.exe /i <完整的MSI路径> /L*V <完整的日志文件路径,包括日志文件名>

事实上,MSI 的“任何 CPU”意味着您获得了 32 位 MSI,它可以在 32 位和 64 位机器上运行。如您所想,64 位 MSI 无法安装在 32 位机器上。

Windows Installer 不支持混合 MSI 程序包。还有其他设置创作工具构建了一个 EXE 引导程序,它捆绑了两个 MSI,每个架构一个,并根据运行的操作系统启动正确的一个。

高级安装程序可以构建混合包,正如这个SO 相似/相关线程中所提到的。与任何开发工具一样,还有其他选项,请参阅上面链接的 SO 线程。

于 2016-06-23T05:51:59.763 回答
0

每种架构都需要不同的包:

https://blogs.msdn.microsoft.com/heaths/2008/01/15/different-packages-are-required-for-different-processor-architectures/

在 Visual Studio 设置项目中,体系结构位于 TargetPlatform 选项中的属性窗口中(在解决方案资源管理器和 F4 中选择设置项目,而不是“属性”)。安装项目不遵循您在代码构建中所做的任何架构选择。

使用 ProgramFiles64Folder 作为 ApplicationFolder 属性(如 Heath 的文章所述)以安装到本机 Program Files 文件夹。

于 2016-06-23T15:52:15.637 回答