2011-01-21 29 views
2

我有一个常规任务:在安装我的产品期间安装.NET Framework 3.5。如何使用Wix安装.NET Framework的可再发行组件包?

我做到以下几点:

  1. 我创建了一个自定义操作X
  2. 自定义操作X启动通过的Process.Start可执行Y()
  3. 可执行Ÿ杀死MSIEXEC进程并运行。 NET Framework安装程序包

这里出现一些问题:.NET Framework安装程序指出Windows Installer服务不可访问,并要求终止所有其他安装!

我认为,它的原因是Process.Kill()方法终止过程不正确。当我通过Kill()终止msiexec进程时,msiserver服务不可停止,但如果通过单击取消按钮完成安装,msiserver服务将变为STOPPABLE。

我该如何解决问题?

+0

这就是一个逻辑重复:http://stackoverflow.com/questions/2335287/what-is-the-best-practise-to-create-msi-with-some-other-子ms-as-prerequisite – 2011-01-21 12:49:29

+0

我必须使用上述步骤代替第三方产品,如dotNetInstaller等。 – Dmitrii 2011-01-21 13:01:33

回答

2

以下是如何引导.NET框架。

1)确保你的生成机器上有.NET 3.5和Windows Installer 3.1增强器。他们应该与VS一起安装。他们可能在这里找到:C:\ Program Files文件(x86)\ Microsoft SDKs \ Windows \ v6.0A \ Bootstrapper \ Packages \ DotNetFX35。

2)编辑wix项目文件。 - 右键单击​​该项目,选择卸载 - 再次右键单击,然后编辑wixproj

3)增加以下项目组:

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

4)添加在下面项目文件结尾

<Target Name="AfterBuild"> 
    <GenerateBootstrapper ApplicationFile="$(TargetFileName)" ApplicationName="My Application Name" BootstrapperItems="@(BootstrapperFile)" ComponentsLocation="Relative" CopyComponents="True" OutputPath="$(OutputPath)" Path="C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Bootstrapper\" /></Target> 

5)现在建立。由此产生的setup.exe & msi应该安装该框架。

斯科特

相关问题