2015-02-17 66 views
1

我一直在嘗試根據this example,作出安裝程序,我似乎遇到了一些棘手的問題。我開發的示例安裝程序已正確編譯並按照它們的安裝進行安裝,但是當我創建更高級別的引導程序和安裝程序時,我遇到了一個問題 - WPF UI無法正確掛接。Wix引導程序自定義GUI沒有顯示

當我運行安裝程序時,它爲我提供了一個通用的安裝程序,其中包含一個紅色磁盤,其標題爲安裝程序安裝所需的Microsoft .NET Framework。運行此操作會導致無法卸載窗口的安裝/卸載條目 - 它似乎也沒有刪除有效負載,只嘗試安裝.Net Framework。

頂級wix文件如下,並感謝您的期待。

Bundle.wxs - 引導程序設置

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"> 
    <Bundle Name="Jeremiah's Test Installer" Version="1.0.0.0" Manufacturer="Starkey" UpgradeCode="5a714642-7857-4582-8bae-80fd6d8ec77a"> 
    <BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost"> 
     <Payload SourceFile="..\TestWPF003\bin\Release\TestWPF003.dll"/> 
     <Payload SourceFile="..\TestWPF003\bootstrapper.config"/> 
     <Payload SourceFile="C:\Program Files (x86)\WiX Toolset v3.9\SDK\Microsoft.Deployment.WindowsInstaller.dll"/> 
    </BootstrapperApplicationRef> 

     <Chain> 
      <!-- TODO: Define the list of chained packages. --> 
      <!-- <MsiPackage SourceFile="path\to\your.msi" /> --> 
     <PackageGroupRef Id='Netfx4Full' />  
     <MsiPackage SourceFile="..\beta\bin\Release\beta.msi" Id="BetaInstallId" Cache="yes" Visible="no"/> 
     <MsiPackage SourceFile="..\alpha\bin\Release\alpha.msi" Id="AlphaInstallId" Cache="yes" Visible="yes"/> 
     </Chain> 
    </Bundle> 

    <Fragment> 
    <!-- Managed bootstrapper requires .NET as a dependency, since it was written in .NET. 
     WiX provides a Bootstrapper for the bootstrapper. The fragment below includes .NET. 
     For more information or examples see Heath Stewart's blog or the WiX source: 
     http://blogs.msdn.com/b/heaths/archive/2011/10/28/introducing-managed-bootstrapper-applications.aspx 
     --> 

    <WixVariable Id="WixMbaPrereqPackageId" Value="Netfx4Full" /> 
    <WixVariable Id="WixMbaPrereqLicenseUrl" Value="NetfxLicense.rtf" /> 

    <util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full" Value="Version" Variable="Netfx4FullVersion" /> 
    <util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full" Value="Version" Variable="Netfx4x64FullVersion" Win64="yes" /> 

    <PackageGroup Id="Netfx4Full"> 
     <ExePackage Id="Netfx4Full" Cache="no" Compressed="yes" PerMachine="yes" Permanent="yes" Vital="yes" 
        SourceFile="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX40\dotNetFx40_Full_x86_x64.exe" 
        DetectCondition="Netfx4FullVersion AND (NOT VersionNT64 OR Netfx4x64FullVersion)" /> 
    </PackageGroup> 
    </Fragment> 

</Wix> 
+0

指定的行我假設你'不使用MvvmLight,這就是爲什麼你沒有Payload入口?除此之外,您的bundle.wxs與您鏈接的示例中的bundle.wxs似乎幾乎完全相同。也許嘗試使用winmerge比較代碼? – user145400 2015-02-17 21:39:39

+0

我建議使用虛擬機來測試安裝程序,這樣您可以拍攝快照並在需要時將其恢復到乾淨的平板。 – user145400 2015-02-17 21:40:45

+0

你是對的 - 我沒有使用MvvmLight。 您提高了虛擬機的優點。如果我能接觸到一個,我會開始使用它進行測試。 – jpatrick 2015-02-18 14:23:03

回答

0

我想這是因爲你缺少的BootstrapperCore.config文件的一部分,你無法將其重命名爲別的。

<Payload SourceFile="..\TestWPF003\BootstrapperCore.config"/> 

編輯:我不認爲name屬性是問題,但具體的文件名必須是BootstrapperCore.config,請嘗試使用上面我:)

+0

我刪除了您顯示的名稱標籤,但沒有改變結果。我編輯了我原來的帖子來反映這一點。 – jpatrick 2015-02-18 14:21:17

+0

@jpatrick檢查編輯我做的 – user145400 2015-02-18 15:57:19

+0

好吧,打敗我沒有意義。 布拉沃先生!好樣的! – jpatrick 2015-02-18 16:35:10