2008-10-02 2 views
3

Я пытаюсь определить наилучшее решение для регистрации COM-сервера с помощью WiX для создания пакета установщика Windows и боюсь.Регистрация COM-сервера с WiX

В этом сообщении Deployment Engineering Archive: HOWTO: Use Regsvr32.exe with WIX есть открытый запрос для «полиции установки», чтобы взломать использование regsvr32 с помощью пользовательского действия exe. Я знаю, что зло использует regsvr32, поскольку он регистрируется системой, а не пользователем, но я также помню, что OleSelfRegister может иметь проблемы из бюллетеня поддержки Microsoft (извините, не могу найти ссылку) - и я считаю, что они рекомендовали использовать regsvr32 ,

Любые советы?

ответ

4

Read "Не использовать таблицы SelfReg и TYPELIB" по адресу:

https://msdn.microsoft.com/en-us/library/bb204770#no_selfreg

Для WiX, посмотрите на компонента элемента в справочнике схемы по адресу:

http://wixtoolset.org/documentation/manual/v3/xsd/wix/component.html

Обратите внимание на некоторые дочерние элементы, такие как AppId, Класс, ProgId, Реестр и так далее. Правильная техника заключается в использовании COM extraction, чтобы отразить регистрационную информацию и декларировать ее декларативно в ваш установщик, чтобы MSI мог позаботиться об этом для вас, не выходя из процесса, к некоторому коду (например, DllRegisterServer()), который может потерпеть неудачу, а также не даст понять MSI отпечаток компонента с точки зрения ремонта и рекламы.

3

Существует инструмент «Tallow», входящий в состав Wix. Вы можете использовать его для автоматического создания записей реестра. Затем вы просто настраиваете свою установку wix для записи этих записей. Selfreg не следует использовать.

+1

для справки: жир больше не является частью wix. Начиная с wix3, он был заменен на heat.exe. – 2009-01-21 00:43:48

0

Как отметил @Trampster, heat.exe не справляется с сбором записей в реестре с серверов COM. Я попытался, но результаты были неполными.

Вместо этого, следуя рекомендациям Monitor Registry Accesses (InstallSite Tools: Monitoring), я использовал InstallShield RegSpyUI. Это предположительно поставляется с версиями Installshield v7 и выше, включая оценочную версию. Эта информация может быть устаревшей; Я могу подтвердить, что это не поставляется с довольно бесполезным Installshield LE, который поставляется с VS2013.

К счастью, у меня была копия InstallShield 2010, и это действительно было с RegSpyUI.

Во всяком случае, RegSpyUI был легкий ветерок: укажите его на COM .exe, извлеките информацию о реестре в .reg-файл. Затем с помощью тепла, чтобы собрать это в .wxs файл вы можете добавить в свой проект Wix

heat reg <some.reg> -gg -o <some.wxs>

Тогда это просто вопрос изменения каких-либо жестко закодированные пути, которые указывают на местоположение СОМ .exe, чтобы они отражают предназначенную для установки папку.

например. если.WXS файл, созданный RegSpyUI + тепло есть что-то вроде этого

<Fragment> 
    <DirectoryRef Id="TARGETDIR"> 
     <Component Id="blah" Guid="{xxxxxxxxxxxxxxxxxxxxxxxxx}" KeyPath="yes"> 
      <RegistryKey Key="TypeLib\{xxxxxxxxxxxxxxxxxxxxxx}\4.1\0\win32" Root="HKCR"> 
       <RegistryValue Value="C:\Users\you\projects\MyProject\dependencies\installation\COMFOO.exe" Type="string" /> 
      </RegistryKey> 
     </Component> 
    </DirectoryRef> 
</Fragment> 

и вы устанавливаете в основной файл WIX в

<Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder" Name="PFiles"> 
      <Directory Id="COMPANY" Name="My Company"> 
       <!--This is the actual installation folder--> 
       <Directory Name="MyProduct" Id="MYPRODUCT"> 

затем просто изменить путь RegistryValue @ значение для ... «[MYPRODUCT]\COMFOO.exe»

Смежные вопросы