1

将代码从 VS2005 迁移到 VS2010 后,我们无法创建安装程序。我们已经完成了新引导程序文件的所有设置,使用 msbuild 生成的 setup.exe 能够安装 windows 安装程序 4.5(如果系统中不存在),然后它成功安装了 .net 框架4.0(如果之前未安装在系统上)。但在此之后,它显示以下错误,并且没有继续安装我们的产品,这是我们使用 VS2005 时应该做的。

安装 .net 框架后,它显示一个错误,粘贴在下面。

“该产品是为平台设计的,但正在安装在英特尔上。从制造商处获取正确的设置。”

注意:当我们手动双击setup.exe时也会出现上述错误。

我们注意到一件事,当我们将 setup.exe 拖到命令提示符(通过命令提示符打开 setup.exe)时,它正在成功运行产品安装截图。

一旦通过 setup.exe 安装了 net framework 4.0,并且当我们尝试通过 Setup.msi 安装产品时,它就会继续安装产品,但这仅在我们安装了 framework 4.0 时才有效。如果一个系统没有安装 framework 4.0,那么通过 Setup.msi 安装后产品将无法工作(Setup.msi 将只安装产品而不安装框架)。简而言之,我们必须将 setup.exe 和 setup.msi 的功能合并在一起,以便在安装 framework 4.0 后继续安装产品。

注意:我们使用 WIX、巡航控制、msbuild 和 Nant 来生成构建。

如果你们中的任何人遇到这种错误,请帮助我们。您的支持将不胜感激。

4

1 回答 1

0

问题出在引导程序生成器中 - 即 7.0A 引导程序生成器。如果 setup.exe 是使用 6.0A 引导程序生成器生成的,则不会出现错误消息。

一个(hacky)解决方案是使用 6.0A 引导程序并为它提供一个修改过的包描述符 ( product.xml) 用于从 7.0A 获取的必备包。

将这两个文件夹复制到C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\WindowsInstaller4_5

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX40

在构建脚本中调整 GenerateBootStrapper 任务以引用 6.0A 引导程序:

<GenerateBootstrapper
  ApplicationFile="Files\$(TargetName).msi"
  ApplicationName="Your app name"
  Culture="en"
  ComponentsLocation ="HomeSite"
  CopyComponents="True"
  Validate="True"
  BootstrapperItems="@(BootstrapperFile)"
  OutputPath="$(OutSubDir)"
  Path="C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Bootstrapper\" 
/>

<ItemGroup>
  <BootstrapperFile Include="Microsoft.Windows.Installer.4.5">
    <ProductName>Microsoft Windows Installer 4.5</ProductName>
  </BootstrapperFile>
  <BootstrapperFile Include=".NETFramework,Version=v4.0">
    <ProductName>Microsoft .NET Framework 4.0</ProductName>
  </BootstrapperFile>
</ItemGroup>

您还需要调整product.xmlDotNetFX40 以解决您将遇到的 XSD 验证错误(他们显然在 product.xml 语法中添加了一些功能)。

于 2011-03-21T10:56:35.130 回答