HelpLibManager.exe разрешает автоматическую установку наборов справок. Однако одно из требований заключается в том, что коллекция справки должна содержаться в подписанном cab-файле. Это означает, что вы не можете использовать файл .mshc для автоматической установки.
Первое, что вам нужно сделать, это получить сертификат подписи кода. Если у вас его еще нет, вы можете приобрести его у VeriSign.
Как только вы получите сертификат для подписи кода, вам необходимо преобразовать ваш файл mshc в файл cab. Это можно сделать с помощью команды makecab в командной строке.
makecab myhelp.mshc myhelp.cab
Затем вам нужно использовать сертификат подписи кода для цифровой подписи cab-файла. Это можно сделать с помощью команды signtool в командной строке.
signtool sign /f your-purchased-signing-certificate.pfx /p password /d "My Help Collection" myhelp.cab
Как только ваш файл .cab подписан, его можно использовать при установке справки в режиме без вывода сообщений вместо файла .mshc. Обязательно обновите файл msha, чтобы он указывал на файл .cab вместо файла .mshc.
Переключатель / brandingPackage не требуется. Я также предлагаю добавить переключатель / content к вашему пользовательскому действию
/content "[CommonAppDataFolder]Microsoft\HelpLibrary"
потому что автоматическая установка справки не удастся, если пользователь еще не настроил хранилище по умолчанию для локальных коллекций справки. Этот параметр игнорируется, если пользователь уже настроил свое хранилище по умолчанию, поэтому всегда опасно использовать его.
Edit:
Это код wix, который я использую для установки справки без вывода сообщений. Обратите внимание, что я использую полные пути ко всем файлам.
Сначала установите свойство с путем к HelpLibManager.
<SetProperty Id="HELPLIBMANAGER"
Value="[ProgramFilesFolder]Microsoft Help Viewer\v1.0\HelpLibManager.exe"
After="InstallInitialize"/>
Затем объявите пользовательские действия, которые будут использовать только что установленное свойство HELPLIBMANAGER. Обратите внимание на использование одинарных кавычек (') в ExeCommand, чтобы мы могли использовать двойные кавычки (") для окружения путей к файлам.
<CustomAction Id="InstallHelp"
Directory="YourHelpDir"
ExeCommand='"[HELPLIBMANAGER]" /product VS /version 100 /locale en-us /silent /content "[CommonAppDataFolder]Microsoft\HelpLibrary" /sourceMedia "[#filekey.msha]"'
Execute="deferred"/>
<CustomAction Id="RollbackInstallHelp"
Directory="YourHelpDir"
ExeCommand='"[HELPLIBMANAGER]" /product VS /version 100 /locale en-us /silent /uninstall /vendor "YourVendorName" /productName "YourProductName" /mediaBookList "YourMediaBookList"'
Execute="rollback"/>
Наконец, запланируйте настраиваемые действия:
<Custom Action="RollbackInstallHelp" After="InstallFiles">NOT REMOVE="ALL"</Custom>
<Custom Action="InstallHelp" After="RollbackInstallHelp>NOT REMOVE="ALL"</Custom>
Действия по удалению практически одинаковы, и их должно быть легко понять. Также имейте в виду, что это работает только для 32-битной ОС. Если вы также хотите поддерживать 64-битную ОС, то вам понадобится еще пара пользовательских действий, чтобы установить правильный путь к HelpLibManager, потому что пути для 32- и 64-битной ОС разные.