WiXを使用してSandcastleプロジェクトのビルド後にSandcastleヘルプファイルビルダーが作成するHelpLibraryManagerLauncherを実行することにより、自分のヘルプファイルをVisualStudio2010のヘルプライブラリに追加しようとしています。
WiXのQuietExecカスタムアクションを使用して、次のコマンドを実行しています。
HelpLibraryManagerLauncher.exe
/product "VS"
/version "100"
/locale en-us
/silent
/brandingPackage Dev10.mshc
/sourceMedia MyClassLibraryHelp.msha
ただし、MSIインストーラーは次の場合に失敗します。
Action 00:00:00: InstallVS2010Help.
CAQuietExec: Help Library Manager Launcher, version 1.0.0.0
CAQuietExec: Copyright c 2010, Eric Woodruff, All Rights Reserved
CAQuietExec: E-Mail: Eric@EWoodruff.us
CAQuietExec:
CAQuietExec: Running Help Library Manager to perform the requested action. Please wait...
CAQuietExec:
CAQuietExec: ERROR: The requested operation could not be performed.
CAQuietExec: Details: The Help Library Manager returned the exit code 401: The installation of content failed. Detailed information can be found in the event log and in the installation log.
CAQuietExec: Error 0x80070191: Command line returned an error.
CAQuietExec: Error 0x80070191: CAQuietExec Failed
CustomAction InstallVS2010Help returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
EventLogを確認すると、次のエラーが記録されます。
An error occurred while updating local content: Microsoft.Help.CacheLib.CacheLibUnsignedInstallRefusedException: Exception of type 'Microsoft.Help.CacheLib.CacheLibUnsignedInstallRefusedException' was thrown.
at Microsoft.Help.CacheLib.DocumentationCache.VerifyAndExtractPackages(VendorName vendorName, ChangeDescription change, StatusCallback`1 statusCallback, CertificateCheckCallback certCheckCallback)
at Microsoft.Help.CacheLib.DocumentationCache.IntegrateChange(VendorName vendorName, ChangeDescription change, StatusCallback`1 statusCallback, CertificateCheckCallback certCheckCallback)
at Microsoft.Help.CacheLib.DocumentationCache.Update(VendorName vendorName, Boolean checkForOnlineUpdates, StatusCallback`1 statusCallback, CertificateCheckCallback certCheckCallback)
at Microsoft.Help.CacheLib.CacheManager.<>c__DisplayClass24.<UpdateAsync>b__23()
at Microsoft.Help.CacheLib.AsyncOperationRunner.Run(Object state)
これが私のWiXコードです:
<CustomAction Id="InstallVS2010Help" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="check" />
<CustomAction Id="SetPropertiesForInstallVS2010Help"
Property="InstallVS2010Help"
Value=""HelpLibraryManagerLauncher.exe" /product "VS" /version "100" /locale en-us /silent /brandingPackage Dev10.mshc /sourceMedia MyClassLibraryHelp.msha"
Execute="immediate" />
.
.
.
<InstallExecuteSequence>
<Custom Action="SetPropertiesForInstallVS2010Help" Before="InstallInitialize">NOT INSTALLED</Custom>
<Custom Action="InstallVS2010Help" Before="InstallFinalize">(NOT INSTALLED) AND (NOT UPGRADINGPRODUCTCODE) AND (NOT REMOVE="ALL")</Custom>
<InstallExecuteSequence>
HelpLibraryManagerLauncher
コマンドプロンプトからを実行すると、操作は正常に完了したと表示されますが、ヘルプライブラリを確認すると、ヘルプライブラリがインストールされていません。
ただし、スイッチを削除する/silent
と、通常の[ヘルプライブラリマネージャー]ウィンドウがポップアップし、ヘルプライブラリが一覧表示されます。
もちろん、ヘルプライブラリマネージャーのGUIを操作せずに、WiXからヘルプファイルを自動的にインストールできるようにしたいのですが、何かが足りないはずです。コマンドプロンプトまたはWiXを使用して、ヘルプファイルをサイレントインストールすることはできませんか?(ただし、コマンドプロンプトからサイレントにアンインストールすることは問題なく機能します)。
これCacheLibUnsignedInstallRefusedException
も懸念事項です。署名されていない場合でも、WiX(およびMSI)にヘルプファイルをインストールさせるにはどうすればよいですか?
WiX v3.5.2415、Sandcastle v2.610621.1、およびSandcastle Help FileBuilderv1.9.1.0を使用しています。Sandcastle HelpFileBuilderが使用するHelp2.0コンパイラとHTMLHelpWorkshop hhc実行可能ファイルは、Visual Studio2008SDKからのものです。
どんな助けでも大歓迎です。