我有一个用C#编写的Windows窗体应用程序。这取决于NHibernate NuGet包,我也在为这个应用程序编写InstallShield安装程序包。所有这些都在Visual Studio Community 2015中完成。
这是我的困惑:如果我为x64构建应用程序,dumpbin告诉我该应用程序的exe是64位的,但是NHibernate的DLL和安装程序的setup.exe文件仍然是32位。 32位安装程序如何包装我的64位应用程序?当我为x64构建时,为什么NHibernate不会变成64位,因为我认为NuGet包应该这样做?最终的问题:如果安装程序是32位,我的应用程序是否仍然可以在64位x64机器上运行?提前谢谢!
答案 0 :(得分:1)
32位安装程序不会阻止您安装64位应用程序;在过于简化的级别上,安装所做的只是将文件或注册表项复制到位。
但是,除非使用64位软件包进行安装,否则Windows Installer很难或无法将资源安装到64位位置,例如通过将64位程序文件文件夹重定向回32位程序文件夹。也就是说,如果您定位,例如ProgramFiles64Folder
或64位注册表项,InstallShield LE应该自动创建一个64位软件包。
请注意,setup.exe的位数和包含在内的.msi包的位数不必匹配。