Я пытаюсь добавить свой собственный файл справки в библиотеку справки Visual Studio 2010, используя WiX для запуска HelpLibraryManagerLauncher, созданного Builder Builder Sandcastle после его сборки моего проекта Sandcastle.Установка справки с помощью диспетчера библиотек справки и WiX
Я использую QuietExec пользовательские действия WIX, чтобы выполнить следующую команду:
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: [email protected]
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
, появляется обычное окно диспетчера библиотек справки и отображается моя справочная библиотека.
Очевидно, что я хочу иметь возможность автоматически устанавливать файл справки из WiX без необходимости взаимодействовать с графическим интерфейсом диспетчера библиотеки справки, но мне что-то не хватает. Невозможно ли тихо установить файл справки либо через командную строку, либо через WiX? (Разумеется, деинсталляция через командную строку работает просто отлично).
CacheLibUnsignedInstallRefusedException
также является проблемой. Как заставить WiX (и мою MSI) установить файл справки, даже если он не подписан?
Я использую WiX v3.5.2415, Sandcastle v2.610621.1 и Sandboxle Help File Builder v1.9.1.0. Справку 2.0 для компилятора справки и HTML-справки hhc, которую использует Sandbule Help File Builder, из пакета Visual Studio 2008 SDK.
Любая помощь будет принята с благодарностью.
Спасибо за точный ответ. Я выполнил ваши шаги, но теперь я получаю сообщение об ошибке «System.UriFormatException: Invalid URI: формат URI не может быть определен» при записи ошибки в EventLog при попытке установить справку напрямую с помощью HelpLibraryManagerLauncher. Если я запустил его без опции/silent, появится графический интерфейс, и установка пройдет отлично. Любая идея расхождения? –
У меня никогда не было сбой в установке без исключения UriFormatException, так что это все догадки. Поскольку вы получаете исключение Uri, я полагаю, что HelpLibMangaer считает, что вы устанавливаете веб-контент вместо содержимого диска. Мое предложение состояло в том, чтобы включить полный путь ко всем файлам, которые используются в команде HelpLibManager. Я отредактирую свой ответ, чтобы включить код wix, который я использую для запуска команды. –
Да, это было так: мне нужно было предоставить полный, цитируемый путь к файлу .msha. Спасибо за вашу помощь и понимание Дугласа. –