5

我是MSI的新手。我创建了一个 Window 的服务,它是我的 MSI 的输出项目。我的本地机器是 64 位 Win 7 机器。我要安装的服务器是在 VM 上运行的 Win 2008 32 位服务器。我正在使用.NET 4 VS2010。

目前,我的服务的 exe 正在构建为发布目标 = 配置管理器中的任何 CPU。MSI,没有给我任何改变平台的选择。

我可以在本地 64 位 Win7 机器上安装没有问题。但是,每当我尝试在 32 位 Win 2008 上安装时,我都会收到以下错误:“此处理器类型错误不支持此安装包。请联系您的产品供应商。”

我尝试将服务的目标更改为 x86 重建 exe 和设置,但我得到了相同的结果。该服务引用了许多类库。我也将它们从 Any Cpu 更改为 x86,只是为了看看是否有任何不同。

我还确保我的安装项目和服务先决条件设置为 .NET Framework 4(x86 和 x64)。我还尝试将 Prerequisites Windows Installer 从 3.1 更改为 4.5。

似乎没有任何效果。有任何想法吗?谢谢。

4

3 回答 3

7

就我而言,在 HKLM/SOFTWARE(64 位)注册表节点下指定条目足以导致在 32 位 Win7 主机上安装失败。

使用免费的集成 InstallShield 产品的 VS 2010/2013 的症状相同。我能够在正在安装的项目上保留任何 CPU 设置。MSI 设置项目不需要其他特殊设置。

于 2014-05-10T09:54:25.967 回答
6

好的,我知道 TargetPlatform 在哪里。它与其他 VS 项目不同。

要访问 TargetPlatform,请选择 MSI 项目并按 F4 键。中提琴!在“属性”网格中,您将找到 TargetPlatform 字段,其中包含以下选项:x86、x64、Itanium。注意:这是一组完全不同的属性,当您右键单击项目并从上下文菜单中选择“属性(Alt-Enter)”项时,您会得到一组完全不同的属性。“Alt-Enter”属性与“F4”属性。

不幸的是,这与其他 VS Project 属性不同。通常,项目属性是在主窗口中设置的,而不是在“F4”属性网格中。因此,当其他线程讨论项目的属性时,我一直感到困惑,因为这是不同的。

比如这个

VS 中的 ConfigurationManager 不会影响 MSI。我将所有依赖程序集保留在“任何 CPU”上。另外,不要忘记在“启动条件”窗口中定位正确的框架(右键单击项目 -> 查看 -> TargetConditions)。

希望这可以帮助。

于 2013-02-27T19:41:45.140 回答
0

我回答这个问题有点晚了!F4 在 Visual Studio 2017 上不起作用。只需突出显示安装项目,然后右键单击右侧边栏上的属性选项卡。然后将“TargetPlatform”更改为您想要的选项。请注意:这与右键单击安装项目不同。

于 2018-08-03T02:24:01.287 回答