我正在使用VS2015为我的服务构建安装解决方案。 我希望程序以64位运行。 在解决方案配置属性中,我将所有项目配置为Debug,Platform Any CPU,Deploy blank。
msi安装程序要求我选择要安装的文件夹,然后选择Program Files \ My Company Name
但是,当我尝试在Windows 8.1 64位操作系统上安装时,安装程序会创建一个文件夹Program Files(x86)\ My Company Name
为什么?
答案 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)
每个架构都需要不同的包:
在Visual Studio安装项目中,体系结构位于TargetPlatform选项中的Properties窗口(在Solution Explorer和F4中选择安装项目,而不是“Properties”)。安装项目不遵循您在代码构建中可能做出的任何架构选择。
使用ProgramFiles64Folder作为ApplicationFolder属性(如Heath的文章所述)安装到本机Program Files文件夹。