2016-06-25 15 views
1

.NET 4.5を動作させるWiXカスタムブートストラップアプリケーションを手に入れることができません。WiXカスタムブートストラップアプリケーションと.NET 4.5

Bundle.wxsに次の行があります。

<PackageGroupRef Id="NetFx45Web" /> 

My BootstrapperCore.configは次のとおりです。

<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" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <wix.bootstrapper> 
     <host assemblyName="FSCustomBA" /> 
    </wix.bootstrapper> 
</configuration> 

これを複数試してみました。

たとえば、以下のことも試しました。

<host assemblyName="FSCustomBA"> 
    <supportedFramework version="v4\Full" /> 
    <supportedFramework version="v4\Client" /> 
</host> 

そして以下。

<host assemblyName="FSCustomBA"> 
    <supportedFramework version="v4.5\Full" /> 
    <supportedFramework version="v4.5\Client" /> 
</host> 

そして以下。

<host assemblyName="FSCustomBA"> 
    <supportedFramework version="v4.5" /> 
</host> 

そして以下。

<host assemblyName="FSCustomBA"> 
    <supportedFramework version="v4.5\Full" /> 
</host> 

そして以下。

どんなに私は、.NET 4.5がインストールされていないシステム上で私のセットアップパッケージを実行したとき、私は.NET 4.5をインストールするように求めています、試してみましたが何
<host assemblyName="FSCustomBA"> 
    <supportedFramework version="v4.5\Client" /> 
</host> 

。 Agree and Installボタンを押すと、セットアップパッケージがクラッシュします。セットアップパッケージを再度実行しようとすると、ボタンが表示される前にセットアップパッケージがハングアップします。再起動してもハングアップします。システムを再起動する前にシステムイメージからシステムを復元する必要があります。

誰でも私が間違っていることを教えてもらえますか?

私はWiX 3.10を使用しています。

これまでのところ私の唯一の手掛かりは、結果として生じるログファイルの次の行です。

[1A14:1778][2016-06-28T10:01:17]i000: The prerequisites were already installed. The bootstrapper application will not be reloaded to prevent an infinite loop. 

これは、Stack Overflowの別の質問であるPrerequisite bootstrapper application fails to install .NET 4.5で言及されています。この質問に対する回答の1つは、BootstrapperCore.configファイルのsupportedRuntime要素にskuの値を設定することです。しかし、私はこれをしました。他に何かが起こっている。

+0

私は何が起こっているかについての手掛かりを持っています。私はパターン$ {ProjectName} .BootstrapperCore.configの後にBootstrapperCore.configファイルの名前を付けることになるWiXの一部であるWixBAとTestBAアプリケーションの例に従った。私が気づいていなかったのは、このファイルがPayload要素を介してバンドルに含まれている場合、名前属性を使用して名前をBootstrapperCore.configに変更する必要があるということです。 –

+0

別のエラーが発生しました。: "0x80131040:見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。 –

+0

カスタムBAに関連付けられているペイロード要素のSuppressSignatureVerification属性をyesに設定すると、「0x80131040:配置されたアセンブリのマニフェスト定義がアセンブリ参照と一致しません」というエラーが解決されました。私はこれが必要なのは、信頼できる証明書の代わりにテスト(自己署名)証明書を使用しているからです。 –

答えて

1

私は同じような問題に遭遇した他の人に恩恵を受けることを期待して、私自身の質問に対する回答を投稿しています。

問題は私のBootstrapperCore.configファイルの内容ではなく、私のBootstrapperCore.configファイルの名前になっています。つまり、私の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" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <wix.bootstrapper> 
     <host assemblyName="FSCustomBA" /> 
    </wix.bootstrapper> 
</configuration> 

私はsupportedFramework要素の使用を含む複数のバリエーションをしようとしたとき、私は間違ったトラックにありました。問題はそれとは関係ないことが判明した。代わりに、問題はWiXの一部であるWixBAとTestBAアプリケーションの例に従ったことです。これはパターン$ {ProjectName} .BootstrapperCore.configの後にBootstrapperCore.configファイルの名前を付けることです。私のプロジェクトはFSCustomBAという名前なので、私のBootstrapperCore。configファイルの名前はFSCustomBA.BootstrapperCore.configでした。

これは問題ありません。それは働くことができます。ただし、セットアップパッケージの実行時に作成される.baディレクトリのコンテキストで、ファイルの名前をBootstrapperCore.configにする必要があります。私はこれを知らなかったので、私はバンドルに次のようにファイルを含めました。

<Payload SourceFile="$(var.FSCustomBA.TargetDir)FSCustomBA.BootstrapperCore.config" /> 

これは機能しません。以下の通りです。

<Payload Name="BootstrapperCore.config" SourceFile="$(var.FSCustomBA.TargetDir)FSCustomBA.BootstrapperCore.config" /> 

Payload要素にName属性を使用することに注意してください。これは、.baディレクトリ内のファイルBootstrapperCore.configに名前を付けることを意味します。

この問題を解決した後、次のエラーが発生しました。 "0x80131040:見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。"ログファイルでは、これはManaged Bootstrapperアプリケーションをロードできないと記録されました。

この問題を解決するために、カスタムBAに関連付けられたペイロード要素に対して、SuppressSignatureVerification属性をyesに設定するだけです。たとえば、私が使用しているペイロード要素は次のとおりです。

<Payload SourceFile="$(var.FSCustomBA.TargetDir)FSCustomBA.dll" SuppressSignatureVerification="yes" /> 

これは、私が使用しているコード署名証明書のために必要だと思います。

私の雇用者は、VeriSignの公式コード署名証明書をすべての公式ビルドに使用しています。しかし、この証明書の詳細は、ほとんどの開発者からさえ秘密にされています。開発者は、日々の仕事のために自己署名証明書を使用します。これはほとんどの事に有効ですが、明らかにそうではありません。

これらの問題を解決したので、私のカスタムブートストラップアプリケーションがロードされ、1つのマイナーなバグを除き、期待どおりに動作します。

私の発見を文書化することで、私はこの問題を解決するために通過しなければならなかった頭痛を他の人に救うことを願っています。

+0

ペイロードに設定ファイルを含めるのを忘れると、同じ問題が発生します。ありがとう! –

関連する問題