将代码从VS2005迁移到VS2010后,我们无法创建安装程序。我们已经完成了新的引导程序文件的所有设置,并且使用msbuild生成的setup.exe能够安装windows Installer4.5(如果系统中不存在),然后它成功地安装了.net Framework4.0(如果以前没有安装在系统上)。但是在这之后,它显示了下面的错误,并且没有继续安装我们的产品,这是它在我们使用VS2005时应该做的事情。
在安装.net框架之后,它显示了一个错误,粘贴在下面。
“该产品是为platform设计的,但正在英特尔上安装。请从制造商处获取正确的安装程序。”
注意:当我们手动双击setup.exe时,也会出现上述错误。
我们已经注意到一件事,当我们将setup.exe拖到命令提示符(通过命令提示符打开setup.exe )时,它成功地运行了产品安装快照。
一旦通过setup.exe安装了net Framework4.0,当我们试图通过Setup.msi安装产品时,它会继续进行产品安装,但只有在安装了Framework4.0的情况下才能正常工作。如果某个系统没有安装Framework4.0,则通过Setup.msi安装后该产品将无法工作(Setup.msi将只安装该产品,而不安装该框架)。简而言之,我们必须将setup.exe和setup.msi的功能合并在一起,这样在安装Framework4.0之后,它应该继续安装产品。
注意:我们使用WIX、巡航控制、msbuild和Nant来生成构建。
如果你们中的任何人遇到过这种错误,请帮助我们。您的支持将不胜感激。
发布于 2011-03-21 18:56:35
问题出在引导程序生成器中-即7.0A引导程序生成器。如果使用6.0A引导程序生成器生成setup.exe,则不会显示错误消息。
一种(hacky)解决方案是使用6.0A引导程序,并为从7.0A获取的必备包提供一个修改后的包描述符(product.xml)。
将这两个文件夹复制到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>您还需要调整DotNetFX40的product.xml来解决您将遇到的XSD验证错误(它们显然在product.xml语法中添加了一些特性)。
https://stackoverflow.com/questions/5205294
复制相似问题