如何使用完全独立的.NET 4.0安装程序制作WiX 3.5安装程序?

时间:2010-06-10 19:35:59

标签: wix .net-4.0 visual-studio-2010

继续上一个问题I asked here,我现在需要转到vs2010。

我已经获得了2010年6月5日版WiX 3.5的最新每周版本。

以下是我的安装程序的相关行:

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

<GenerateBootstrapper ApplicationFile="MySetup.msi" ApplicationName="MyProgram" BootstrapperItems="@(BootstrapperFile)" Path="C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\" ComponentsLocation="Relative" OutputPath="$(OutputPath)" Culture="en" />

然而,它只是不起作用。在vs2010中,.NET Framework 4.0和Windows Installer 4.5文件旁边有感叹号,属性页面将它们列为“Unknown BuildAction BootstrapperFile”,而构建似乎根本不会安装.NET 4.0。相关警告是:

C:\source\depot\project\vs2010\WiXSetup\WiXSetup.wixproj(68,5): warning MSB3155: Item 'Microsoft.Net.Framework.4.0' could not be located in 'C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\'.

1 个答案:

答案 0 :(得分:12)

简短的回答是改变

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

<Target Name="setup">
    <GenerateBootstrapper
        ApplicationFile="myproduct.msi"
        ApplicationName="myproduct"
        BootstrapperItems="@(BootstrapperFile)"
        Path="C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\"
        ComponentsLocation="Relative"
        OutputPath="$(cddir)"
        Culture="en"/>
</Target>

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

<Target Name="setup">
    <GenerateBootstrapper
        ApplicationFile="myproduct.msi"
        ApplicationName="myproduct"
        BootstrapperItems="@(BootstrapperFile)"
        Path="C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\"
        ComponentsLocation="Relative"
        OutputPath="$(cddir)"
        Culture="en"/>
</Target>

我通过进入我的计算机上的SDK引导程序目录(C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ Bootstrapper),为Visual Studios 2010找到了这一点。在那里有一个可以列出的项目列表由Wix读取并包含在引导中。在每个文件夹中都有一个名为Product.xml的文件。在查看用于创建.NET 3.5安装程序的帮助here之后,我发现Product标记中的ProductCode属性似乎标识了boostrap元素的名称,因此当我将值更改为C:中引用的值时Program Files \ Microsoft SDKs \ Windows \ v7.0A \ Bootstrapper \ Packages \ DotNetFX40 \ Product.xml。