2011-11-02 4 views
2

J'essaie de créer une interface utilisateur personnalisée pour WiX et Burn. J'ai suivi certains des guides que j'ai trouvés, et jusqu'à présent, j'ai un projet qui a ce qui suit, qui hérite de BootstrapperApplication.WiX Burn UI personnalisée

namespace MyBA 
{ 
    public class TestBA : BootstrapperApplication 
    { 
     protected override void Run() 
     { 
      MessageBox.Show("My BA is running"); 
      this.Engine.Quit(0); 
     } 
    } 
} 

Et dans les AssemblyInfo.cs:

[assembly: BootstrapperApplication(typeof(TestBA))] 

Puis dans mon projet, je Bootstrapper donne les résultats suivants.

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
    xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"> 

    <Bundle Name="MyApplication" 
      Version="1.0.0" 
      Manufacturer="Acme Ltd" 
      UpgradeCode="F84A4058-FDF6-4218-BCB5-12C811DA3C99" 
      Condition="NOT ((VersionNT = 600 AND ServicePackLevel >=2) OR (VersionNT >= 601))" 
      IconSourceFile="$(var.MyApplicationInstallerRequiredFiles.ProjectDir)logo.ico" 
      SplashScreenSourceFile="$(var.MyApplicationInstallerRequiredFiles.ProjectDir)Splashscreen.bmp" 
      DisableRepair="no" 
      DisableRemove="no" 
      DisableModify="no"> 

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

     <WixVariable Id="WixStdbaLicenseRtf" 
        Value="$(var.MyApplicationInstallerRequiredFiles.ProjectDir)Licence.en-gb.rtf" /> 
     <WixVariable Id="WixStdbaLogo" 
        Value="$(var.MyApplicationInstallerRequiredFiles.ProjectDir)logoInstallSmall.bmp" /> 

     <BootstrapperApplicationRef Id='ManagedBootstrapperApplicationHost'> 
      <Payload Name='BootstrapperCore.config' 
        SourceFile='$(var.MyApplicationInstallerRequiredFiles.ProjectDir)Bootstrapper\MyBA.BootstrapperCore.config' /> 
      <Payload SourceFile='$(var.MyApplicationInstallerRequiredFiles.ProjectDir)Bootstrapper\MyBA.dll' /> 
     </BootstrapperApplicationRef> 

     <Chain> 
      <PackageGroupRef Id="MyApplicationPackage" /> 
     </Chain> 
    </Bundle> 
</Wix> 

et j'ai ajouté MyBA.BootstrapperCore.config

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
     <sectionGroup name="wix.bootstrapper" 
         type="Microsoft.Tools.WindowsInstallerXml.Bootstrapper.BootstrapperSectionGroup, BootstrapperCore"> 
      <section name="host" 
        type="Microsoft.Tools.WindowsInstallerXml.Bootstrapper.HostSection, BootstrapperCore" /> 
     </sectionGroup> 
    </configSections> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
     <supportedRuntime version="v4.0" /> 
    </startup> 
    <wix.bootstrapper> 
     <host assemblyName="MyBA"> 
      <supportedFramework version="v4\Full" /> 
      <supportedFramework version="v4\Client" /> 
     </host> 
    </wix.bootstrapper> 
</configuration> 

Cependant, chaque fois que je lance le Setup.exe pour le programme d'amorçage, je reçois les splashscreen apparaissent brièvement, mais rien d'autre. Si je regarde dans le% TEMP% dans les journaux il y a les suivantes

[0A00:0424][2011-11-02T15:52:08]: Burn v3.6.2221.0, path: C:\MyApplication\dev\source\Bootstrapper1\bin\Debug\Setup.exe, cmdline: '' 
[0A00:0424][2011-11-02T15:52:08]: Setting string variable 'WixBundleName' to value 'MyApplication' 
[0A00:0424][2011-11-02T15:52:08]: Setting string variable 'WixBundleLog' to value 'C:\Users\AppData\Local\Temp\MyApplication_20111102155208.log' 
[0A00:0424][2011-11-02T15:52:08]: Condition 'NOT ((VersionNT = 600 AND ServicePackLevel >=2) OR (VersionNT >= 601))' evaluates to true. 
[0A00:0424][2011-11-02T15:52:08]: Setting string variable 'WixBundleOriginalSource' to value 'C:\MyApplication\dev\source\Bootstrapper1\bin\Debug\Setup.exe' 
[0A00:0424][2011-11-02T15:52:08]: Loading managed bootstrapper application. 
[0A00:0424][2011-11-02T15:52:08]: Error 0x80131040: Failed to create the managed bootstrapper application. 
[0A00:0424][2011-11-02T15:52:08]: Error 0x80131040: Failed to create UX. 
[0A00:0424][2011-11-02T15:52:08]: Error 0x80131040: Failed to load UX. 
[0A00:0424][2011-11-02T15:52:08]: Error 0x80131040: Failed while running 
[0A00:0424][2011-11-02T15:52:08]: Error 0x80131040: Failed to run per-user mode. 

Pourquoi est-ce qui se passe et pourquoi les erreurs ci-dessus se passe?

Répondre

7

Si vous regardez le code source du WixBA, ils déclarent une Threading.Dispatcher mondiale, puis dans la méthode surchargée Run(), il y a la ligne suivante:

Threading.Dispatcher.Run(); 

J'ai eu des problèmes similaires , et de même ajouter le Threading.Dispatcher à mon application bootstrapper les a corrigés. En outre, si votre application Bootstrapper dépend d'autres DLL, vous devez les inclure en tant que <Payload/> sous <BootstrapperApplicationRef/>.

Questions connexes