2011-01-21 63 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應該安裝該框架。

斯科特

相關問題