Bootstrapper(setup.exe)说“找不到.NET 3.5”但启动.msi直接安装应用程序没有问题

时间:2010-04-07 09:48:50

标签: windows-7 installer wix windows-installer installation

我们的安装程序会生成一个引导程序(setup.exe)和一个MSI文件 - 这是一种很常见的情况。

其中一台生产机器在安装过程中报告了一个奇怪的问题:

  • 如果用户启动引导程序(setup.exe),则会报告未安装.NET 3.5 。管理员组下的帐户会发生这种情况。无论是否以管理员身份启动它,都是相同的行为。

  • 无论是否以管理员身份运行,application.msiOurInstallLauncher.exe(请参阅下面的说明)都会直接启动,应用程序安装正常。

  • 我们检查过计算机上安装了.NET(64位和32位“版本”= C:\Windows\Microsoft.NET\Framework64C:\Windows\Microsoft.NET\Framework下都有一个名为v3.5的文件夹。

这种情况发生在64位Windows 7上。我无法在我的开发64位Windows 7上重现它。在Windows XP和Vista上,它在很长一段时间内都没有任何问题。

我们的构建脚本的一部分,它声明了GenerateBootStrapper任务(没什么特别的):

<ItemGroup>
  <BootstrapperFile Include="Microsoft.Windows.Installer.3.1">
    <ProductName>Microsoft Windows Installer 3.1</ProductName>
  </BootstrapperFile>
  <BootstrapperFile Include="Microsoft.Net.Framework.3.5">
    <ProductName>Microsoft .NET Framework 3.5</ProductName>
  </BootstrapperFile>
</ItemGroup>

  <GenerateBootstrapper
    ApplicationFile=".\Files\OurInstallLauncher.exe"        
    ApplicationName="App name"
    Culture="en"
    ComponentsLocation ="HomeSite"
    CopyComponents="True"
    Validate="True"
    BootstrapperItems="@(BootstrapperFile)"
    OutputPath="$(OutSubDir)"
    Path="$(SdkBootstrapperPath)" />

注意:OurInstallLauncher.exe是语言选择器,它根据用户选择将变换应用于msi。这与问题无关,因为安装程序永远不会启动这个exe!

编辑:显示启动setup.exe后立即缺少.NET 3.5并建议安装.NET 3.5。当用户同意安装时,.NET 3.5安装程序说已经安装了.NET 3.5并且MSI安装程序继续运行。如果他们选择不安装.NET 3.5,则安装结束。

之前有没有人见过这种行为?

2 个答案:

答案 0 :(得分:3)

这似乎是Bootstrapper或Windows 7中的错误。

解决方案:

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\DotNetFX35\en\package.xml       必须在构建计算机上进行调整,因为默认的德语Windows 7安装没有此密钥存在:

  <RegistryCheck Property="DotNet35InstallSuccess" 
Key="HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5\1033" Value="Install" />

因此,安装程序报告说目标计算机上没有安装.NET 3.5(德语版Windows 7)。

为了让设置正确检测已安装的.NET,       C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\DotNetFX35\en\package.xml       文件必须调整如下:

必须从注册表检查键中删除

\ 1033:

  <RegistryCheck Property="DotNet35InstallSuccess" 
Key="HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5" Value="Install" />

答案 1 :(得分:0)

MSI安装没有问题这一事实并不令人惊讶,因为它只是安装.NET 3.5的引导程序。 MSI包不需要.NET才能安装(除非您使用.NET程序集中实现的自定义操作,或在GAC中注册.NET程序集)。

在出现此问题的计算机上卸载并重新安装.NET。它很可能只是一个以某种方式损坏的.NET安装。