3

私は Wix を初めて使用し、明らかに自分では解決できない問題に遭遇しました。

簡単な背景: 私は、大企業に展開するための SOA ベースのアプリケーションの包括的なスイートを構築しているソフトウェア ベンダーを代表しています。私たちのアーキテクチャは、個別にインストール/アップグレードできる多くのレイヤーで構成されているため、ゼロから構成するいくつかのインストーラーを作成しています (プラットフォーム、コア フレームワーク コンポーネント、サービス レイヤー、ビジネス レイヤー、アプリケーション レイヤーなど)。

ソフトウェア バージョン:
-Wix 3.5.1309.0 (wix.dll)
- Visual Studio 2008、.Net 3.5
- ビルド OS: Windows 2008 R2 Standard 64 ビット
- デプロイ OS: Windows 2008 Standard 32 ビット

私の問題は、COM+ アプリケーションに .Net アセンブリをインストールすることに関するものです。「タイプ ライブラリをインストールできませんでした」というエラーが表示され続けます。私は見つけることができるすべてのドキュメントを読んでおり、数日間グーグルで検索しています。このトピックに関する投稿がかなりありますが、まだ問題を解決できません。

問題を切り分けるために、問題を別のインストーラーに抽出しました。まず、メイン インストーラーを実行し
ます。 1. COM+ にインストールするアセンブリを含め、すべてのアセンブリを GAC にインストールします。
2. ローカル ユーザーとグループを作成します。
3. ロールなどを含むターゲット COM+ アプリケーションを作成します。
4. ターゲット アセンブリとコンパニオン タイプ ライブラリをフォルダーにインストールします (GAC ルックアップの問題を解決するため)。

このインストーラーは、インストール/修復/アンインストールできます。すべて正常に動作します。

次に、問題のみを含む最小限のインストーラーを実行して、次のことを試み
ます。 1. プレインストールされた .dll と .tlb を参照して、既存の COM+ アプリケーション (サーバー) にアセンブリをインストールします。

インストールが失敗し、ログに次のように表示されます。

MSI (s) (AC:64) [19:16:01:127]: Invoking remote custom action. DLL: C:\Windows\Installer\MSI1BAB.tmp, Entrypoint: ComPlusInstallExecute  
ComPlusInstallExecute:  ExceptionInfo: Code='0', Source='System.EnterpriseServices', Description='Could not install type library 'c:\Program Files\MyManufacturer\ComPlus\WDA.ServiceProviders.Update.11.tlb' into application 'WDA.ServiceProviders.Update.11'.', HelpFile='', HelpContext='0'  
ComPlusInstallExecute:  Error 0x80020009: Failed to invoke RegistrationHelper.InstallAssembly() method  
ComPlusInstallExecute:  Error 0x80020009: Failed to register .NET assembly  
ComPlusInstallExecute:  Error 0x80020009: Failed to register assembly, key: MyAssembly  
ComPlusInstallExecute:  Error 0x80020009: Failed to register assemblies  
Action ended 19:16:02: InstallFinalize. Return value 3.  

また、COM+ アプリケーションはこのインストーラーによって作成されたものではありませんが、ロールバックによって削除されることにも気付きました。
サーバー マネージャーを使用して、インストーラーが参照している同じ物理ファイルからアセンブリを手動でインストールできます。コンポーネントを COM+ アプリケーションから手動で削除すると、インストーラーが機能します。

また、そもそも typelib を指定する必要があるのはなぜですか? とにかく、EnterpriseServices.RegistrationHelper はその場で typelib を生成しています。

これは、失敗している最小限のテスト インストーラーです。

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"  
     xmlns:complus="http://schemas.microsoft.com/wix/ComPlusExtension"  
>  
  <Product Id="48EDB258-BD84-47EF-94A2-B4950EE48139"  
             UpgradeCode="F29B8EBD-DFD1-4B7E-96FF-86842CAAE4A4"  
             Name="ComPlusInstalls"  
             Language="1033"  
             Version="1.0.0"  
             Manufacturer="MyManufacturer">    
    <Package Id="ABA41719-BC28-4A57-BA9A-58F4F3B2194F" InstallerVersion="200" Compressed="yes" />  
    <Media Id="1" Cabinet="WixTest.cab" EmbedCab="yes" />  
    <complus:ComPlusApplication Id="MyApplication" ApplicationId="1FCF220A-A1FE-44FE-BE91-B37341BA6D4A" />  
    <Directory Id="TARGETDIR" Name="SourceDir">  
      <Directory Id="ProgramFilesFolder">  
        <Directory Id="MyManufacturer" Name="MyManufacturer">  
          <Directory Id="INSTALLLOCATION" Name="ComPlus">  
            <Component Id="MyComponent" Guid="6D46A007-6669-487B-BAA0-DFA7314C141D" KeyPath="yes">  
              <complus:ComPlusAssembly Id="MyAssembly" Type=".net" Application="MyApplication"  
                                       RegisterInCommit="no" DllPathFromGAC="no"  
                                       DllPath="[INSTALLLOCATION]WDA.ServiceProviders.Update.11.dll"  
                                       TlbPath="[INSTALLLOCATION]WDA.ServiceProviders.Update.11.tlb"/>  
            </Component>  
          </Directory>  
        </Directory>  
      </Directory>  
    </Directory>  
    <Feature Id="MainFeature" Title="WixTest" Level="1" Absent="disallow" InstallDefault="local">  
      <ComponentRef Id="MyComponent" />  
    </Feature>  
  </Product>  
</Wix>  

乾杯、-
ニルス

4

2 に答える 2

1

私も同じ問題を抱えてる。Wix 3.5 と 3.6.2012.0 を試してみましたが、どちらでも動作しませんでした。次の場合に機能します

  1. 最初にregsvcsを使用します
  2. コンポーネントを削除する
  3. msi を実行し、アプリケーションが既に存在するというメッセージが表示されたら [無視] をクリックします。

解決策を見つけることができましたか?

于 2011-08-12T21:54:25.680 に答える
0

まず、WiX v3.5 の最新バージョンにアップグレードしてみてください。最後に、COM+ のいくつかのバグ修正がありました。それでもうまくいかない場合は、COM+ に関する未解決のバグを調べてください。COM+ は複雑なため、インストール コードにはいくつかの既知の問題があります。

これらのバグのいずれかが該当すると思われる場合は、コミュニティで修正を手伝っていただけないでしょうか?

于 2011-02-14T22:20:11.010 に答える