Windows Server 2008 R2 (Service Pack 1) 上の Wix v3.5 で作成された対応する 32 ビット .MSI パッケージから 32 ビットのカスタム BizTalk アダプターをインストールすると、非常に奇妙ですが 100% 再現可能な問題が見つかりました。
基本的に、インストーラーは正常に動作し、適切なファイルを Program Files (x86) フォルダーにコピーし、対応するレジストリ エントリを HKCU\Wow6432Node\CLSID の下に書き込み、アダプターを登録します。
BizTalk Server 管理コンソールで、Platform Settings\Adaptersフォルダーの下にアダプターを追加しようとすると、[アダプターのプロパティ] ダイアログ ボックスが表示されます。そこで、アダプターリストでカスタム アダプターを見つけてわかりやすい名前を付けることができますが、ダイアログ ボックスを検証しようとすると、次のエラーが表示されます。
トランスポート構成を読み取れません。アダプタ管理コンポーネントがローカル マシンにインストールされているかどうかを確認します。レジストリからトランスポート構成を読み取っているときに、"CLSID{7823EF8C-0D1E-4BC4-B110-2C16A0B8A63F}\BizTalk" キーの値を読み取れませんでした。システムは、指定されたファイルを見つけることができません。
それにもかかわらず、対応するレジストリ キーがそこにあることを確認できます。Windows レジストリ エディター (regedit.exe)、reg.exe コマンド ライン ユーティリティ、x86 PowerShell コマンド プロンプト、C# プログラムなどで確認できます。
さて、ここが奇妙な部分です。
レジストリ キーを一時的な .reg ファイルにエクスポートし、キーを削除してから、一時ファイルの内容を Windows エクスプローラーでダブルクリックして再インポートすると、アダプターを BizTalk Server 管理コンソールに正常に追加できるようになりました。 .
reg.exe コマンド ライン ユーティリティ (reg.exe /export; reg.exe /delete; reg.exe /import) を使用して同じ手順を実行しましたが、同じ結果が得られました。
私は何を間違っているのでしょうか?
私の WiX プロジェクト ファイルは、同じプロジェクト ファイルから32 ビットと 64 ビットの両方のプラットフォームをターゲットにできるように作成されています (ただし、2 つの連続したコンパイルがあります)。説明のために、スクリプトの適切な部分を次に示します。
<!-- Platform-specific variables -->
<?if $(var.Platform) = x64 ?>
<?define Win64 = "yes" ?>
<?define ProductDisplayName = "$(var.ProductName) $(var.ProductVersion) (x64)" ?>
<?define ProductId = "791dc40e-6536-47db-8046-2c819562d819" ?>
<?define ProductUpgradeCode = "7a9af2a5-4f90-43fe-94cc-faeafb1bc2ef" ?>
<?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
<?else ?>
<?define Win64 = "no" ?>
<?define ProductDisplayName = "$(var.ProductName) $(var.ProductVersion)" ?>
<?define ProductId = "3e6b25ab-5ab8-46ff-9ad8-fa2b1d387a31" ?>
<?define ProductUpgradeCode = "da1ab3c5-64d5-4827-9287-4d3939fe51b1" ?>
<?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
<?endif ?>
<!-- Windows Installer package -->
<Product Id="$(var.ProductId)"
Name="$(var.ProductDisplayName)"
Language="1033"
Version="$(var.ProductFullVersion)"
Manufacturer="BizTalkFactory.AdapterPack.Setup"
UpgradeCode="$(var.ProductUpgradeCode)"
>
<Package InstallerVersion="200" Compressed="yes" Platform="$(var.Platform)" />
<Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
<!-- Internal components here -->
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="$(var.PlatformProgramFilesFolder)">
<Directory Id="INSTALLLOCATION" Name="$(var.ProductName) $(var.ProductVersion)">
<!-- Microsoft BizTalk Base Adapter Framework -->
<Component Id="Component.Microsoft.Samples.BizTalk.Adapter.Common" Guid="6803e9aa-4e8a-4b90-b96b-9c9eb482a415" Win64="$(var.Win64)">
<File Id="File.Microsoft.Samples.BizTalk.Adapter.Common.dll"
Name="Microsoft.Samples.BizTalk.Adapter.Common.dll"
Source="$(var.SolutionDir)References\Microsoft.Samples.BizTalk.Adapter.Common.dll"
KeyPath="yes"
/>
</Component>
<!-- BizTalk Custom Adapter -->
...
<!-- Custom BizTalk Adapter registration -->
<Component Id="Component.CustomAdapterManagement.Registry" Guid="bcf232d5-7ab2-4905-a59a-89a72f94ffd5" Win64="$(var.Win64)">
<RegistryKey Root="HKCR" Key="CLSID\{7823EF8C-0D1E-4BC4-B110-2C16A0B8A63F}" Action="createAndRemoveOnUninstall">
<RegistryValue Type="string" Value="Name of the Custom BizTalk Adapter" />
<RegistryKey Key="Implemented Categories\{7F46FC3E-3C2C-405B-A47F-8D17942BA8F9}" Action="createAndRemoveOnUninstall" />
<RegistryKey Key="BizTalk" Action="createAndRemoveOnUninstall">
<RegistryValue Type="string" Value="BizTalk" />
<!-- other registry values here -->
</RegistryKey>
</RegistryKey>
</Component>
</Directory>
</Directory>
</Directory>
<!-- Features -->
<Feature Id="F_0CA4329B_BA7F_462E_91EB_EEEA6FF7525E" Title="Custom Adapter" Level="1" TypicalDefault="install" InstallDefault="local" AllowAdvertise="no" Absent="allow">
<ComponentRef Id="Component.Microsoft.Samples.BizTalk.Adapter.Common" />
<ComponentRef Id="Component.CustomAdapter" />
<ComponentRef Id="Component.CustomAdapterManagement" />
<ComponentRef Id="Component.CustomAdapterManagement.Registry" />
</Feature>
私はこれについて完全に私の心を失っています!