我是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。
似乎没什么用。有任何想法吗?感谢。
答案 0 :(得分:6)
在我的情况下,在HKLM / SOFTWARE(64位)注册表节点下指定的条目足以导致32位Win7主机上的安装失败。
使用免费的集成InstallShield产品,VS 2010/2013的症状相同。我能够在正在安装的项目上保留Any CPU设置。 MSI安装项目没有其他特殊设置。
答案 1 :(得分:5)
好的,我想出了TargetPlatform的位置。它与其他VS项目不同。
要访问TargetPlatform,请选择MSI项目并按F4键。中提琴!在“属性”网格中,您将找到带有选项的TargetPlatform字段:x86,x64,Itanium。注意:当您右键单击项目并从上下文菜单中选择“属性(Alt-Enter)”项时,这是一组完全不同的属性。 “Alt-Enter”属性与“F4”属性。
不幸的是,这与其他VS Project属性不同。通常,项目属性在主窗口中设置,而不是在“F4”属性网格中。因此,当其他线程讨论项目的属性时,我一直感到困惑,因为这是不同的。
例如one
VS中的ConfigurationManager不会影响MSI。我将所有依赖程序集保存在“任何CPU”上。另外,不要忘记在“启动条件”窗口中定位正确的框架(右键单击项目 - >视图 - > TargetConditions)。
希望这有帮助。
答案 2 :(得分:0)
我有点迟来回答这个问题! F4在Visual Studio 2017上不起作用。仅突出显示安装项目,然后右键单击右侧边栏上的“属性”选项卡。然后将“ TargetPlatform”更改为所需的选项。请注意:这与右键单击Setup项目不同。