evo*_*dev 4 windows-installer windows-services setup-project
我是MSI的新手.我创建了一个Window的服务,它是我的MSI的输出项目.我的本地机器是64位Win 7机器.我尝试安装的服务器是在VM上运行的Win 2008 32位服务器.我正在使用.NET 4 VS2010.
目前,我的服务的exe正在构建为发布目标= Config Manager中的任何CPU.MSI,没有给我任何改变平台的选择.
我可以在我的本地64位Win7机器上安装没问题.但是,每当我尝试在32位Win 2008上安装时,我都会收到以下错误:"此处理器类型错误不支持此安装包.请与您的产品供应商联系."
我尝试将服务的目标更改为x86重建exe和设置,但我得到了相同的结果.该服务引用了许多类库.我将那些从Any Cpu更改为x86,只是为了看看是否有任何区别.
我还确保将我的安装项目和服务先决条件设置为.NET Framework 4(x86和x64).我还尝试将先决条件Windows Installer从3.1更改为4.5.
似乎没什么用.有任何想法吗?谢谢.
在我的情况下,在HKLM/SOFTWARE(64位)注册表节点下指定的条目足以导致32位Win7主机上的安装失败.
使用免费的集成InstallShield产品,VS 2010/2013的症状相同.我能够在正在安装的项目上保留Any CPU设置.MSI安装项目不需要其他特殊设置.
好的,我想出了TargetPlatform的位置.它与其他VS项目不同.
要访问TargetPlatform,请选择MSI项目并按F4键.中提琴!在"属性"网格中,您将找到带有选项的TargetPlatform字段:x86,x64,Itanium.注意:当您右键单击项目并从上下文菜单中选择"属性(Alt-Enter)"项时,这是一组完全不同的属性."Alt-Enter"属性与"F4"属性.
不幸的是,这与其他VS Project属性不同.通常,项目属性在主窗口中设置,而不是在"F4"属性网格中.因此,当其他线程讨论项目的属性时,我一直感到困惑,因为这是不同的.
像这样的一个
VS中的ConfigurationManager不会影响MSI.我将所有依赖程序集保存在"任何CPU"上.另外,不要忘记在"启动条件"窗口中定位正确的框架(右键单击项目 - >视图 - > TargetConditions).
希望这可以帮助.