2010-06-10 90 views
7

继续前面的问题I asked here,我现在需要转到vs2010。如何使用完全自包含的.NET 4.0安装程序制作WiX 3.5安装程序?

我已经获得了最新的WiX 3.5版本,即2010年6月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\'. 

回答

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> 

我想通过进入我的机器上Visual Studio 2010的SDK引导程序目录(C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ Bootstrapper)。下面是一个项目列表可以通过Wix读取并包含在引导程序中。在每个文件夹中都有一个名为Product.xml的文件。查看帮助here以创建.NET 3.5安装程序后,我发现Product标记中的ProductCode属性显示为标识boostrap元素的名称,因此当我将值更改为C:\ Program Files \ Microsoft中引用的值时SDKs \ Windows \ v7.0A \ Bootstrapper \ Packages \ DotNetFX40 \ Product.xml它工作。

+0

这是它,谢谢。我很高兴他们决定改变他们的命令结构,这是非常有用和必要的。 – mmr 2010-06-10 20:01:27

+0

我在VS2010中也遇到过这个问题,并且这个解决方案完美地工作(谢谢!),除了感叹号仍然存在于自举程序包旁边的整体问题之外。不过,安装程序会使用引导程序包完全构建,并按预期进行安装。如果有人知道是什么导致感叹号,以及如何摆脱它,请在这里添加。谢谢! – 2010-11-10 20:08:08

相关问题