当我选择Program Files时,为什么我的服务安装项目安装到Program Files(x86)?

时间:2016-06-23 04:29:13

标签: visual-studio-2015 windows-installer visual-studio-setup-proje

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

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

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

为什么?

2 个答案:

答案 0 :(得分:3)

最有可能的原因是您生成的MSI是32位MSI,只能访问32 bit folder paths。因此,OS自动执行重定向。

您可以使用免费工具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,每个体系结构一个,并根据运行的操作系统启动正确的MSI。

Advanced Installer can build mixed packages,也在此SO similar/related thread中提到过。与任何开发工具一样,还有其他选项,请参阅我上面链接的SO线程。

答案 1 :(得分:0)

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

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

在Visual Studio安装项目中,体系结构位于TargetPlatform选项中的Properties窗口(在Solution Explorer和F4中选择安装项目,而不是“Properties”)。安装项目不遵循您在代码构建中可能做出的任何架构选择。

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