2009-10-29 4 views
4

У меня есть несколько файлов exe-сервера VB6 ActiveX, которые необходимо зарегистрировать при установке до их использования.Регистрация ActiveX exe-сервера с использованием WiX

Я попытался использовать Heat для извлечения информации, но только генерирует элемент файла.

Эти файлы можно зарегистрировать, вызвав их с помощью переключателя/regserver и отменив регистрацию, вызвав их с помощью переключателя/unregserver. Я понимаю, что это не правильный путь. Вместо этого я должен добавить ключи реестра и другие необходимые элементы в мой источник wix.

Мой вопрос: как узнать, какие ключи реестра и другой элемент требуется для регистрации этих файлов exe ActiveX. «Видеть как жара», похоже, не удается собрать эту информацию.

ответ

2

Элементы управления ActiveX - это только объекты COM. Минимальная сумма регистрации вам нужно сделать, это что-то вроде этого:

<RegistryKey Root="HKCR" Action="createAndRemoveOnUninstall" Key="CLSID\{YOUR-GUID-HERE}"> 
    <RegistryKey Action="createAndRemoveOnUninstall" Key="InprocServer32"> 
     <RegistryValue Action="write" Value="[INSTALLDIR]YOUR-DLL-HERE.dll" Type="string"/> 
     <RegistryValue Action="write" Name="ThreadingModel" Value="Apartment" Type="string"/> 
    </RegistryKey> 
    </RegistryKey> 

Вы можете зарегистрировать Prog ID:

<RegistryKey Action="createAndRemoveOnUninstall" Key="ProgID"> 
     <RegistryValue Action="write" Value="YOUR.PROGIDHERE" Type="string"/> 
    </RegistryKey> 
2

, как я могу узнать, какие ключи реестра и другие элемент Мне нужно зарегистрировать эти файлы ActiveX exe

В общем, вы можете обнаружить изменения реестра, подобные этому:

  1. Принесите реестр в чистое состояние, например. использовать myapp.exe /unregserver

  2. Создать дамп содержимого реестра как этот

    c:\WINDOWS\system32\reg.exe export dump1.reg 
    
  3. Выполнить команду, которая будет изменять реестр, например, myapp.exe /regserver

  4. Создайте еще один dump2.reg реестра .

  5. Найти различия между dump1.reg и dump2.reg с сравниваете инструмента в (например TortoiseSVN добавляет команду «дифф» в контекстное меню проводника , когда у вас есть два выбранные файлы)

В различиях, которые вы должны игнорировать, может быть некоторый шум. Типичным примером является HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\RNG\Seed. Этот раздел реестра используется окнами CryptoAPI для хранения непрерывно собранной энтропии. Кстати, этот ключ иногда появляется в пакетах MSI, генерируемых генераторами коммерческих установок. Это, по-видимому, указывает на то, что они используют подобный метод анализа реестра :-)

3

У меня была такая же проблема с талловом из WiX 2.0, и мне пришлось внедрять реестр для серверов без компромиссов. Вот patched tallow. Было бы неплохо объединить класс ProcessWithInjectedDll в Heat и, вероятно, с какой-то точки зрения сходиться к основной магистрали.

Опасайтесь, что большое количество трещин из VB6 runtime попадает в создаваемые ключи реестра. Сгенерированный выход неприменим без некоторой настройки. Именно тогда CleanupRegInclude.vbs может быть полезен.

И последнее, но не менее важное: абсолютные имена файлов и пути бесполезны. Вместо этого вы должны использовать #YourComponent и $ YourComponent (проверьте документацию MSI).

1

Я думал, что heat.exe был обновлен, чтобы иметь возможность собирать файлы COM EXE, но я думаю, он, возможно, еще не был реализован.

Я обычно использую инструмент под названием RegSpy/RegSpy 2 для извлечения информации из COM DCOM EXE-файлов: http://www.installsite.org/pages/en/tt_analyze.htm#RegSpy.

Использование вышеуказанного инструмента даст вам рег-файл, но вам все равно нужно будет преобразовать его в формат WIX. Чтобы получить файл рег вы идете:

regspy2.exe myfile.exe >> myfile.reg

Я не думаю, что есть способ для автоматического преобразования рег файл в формате WXS (я помню написав базовый конвертер некоторое время назад, но у меня его нет). Чтобы это было легко, вы можете извлечь информацию, необходимую с помощью Installshield или Wise для Windows Installer, построить MSI, а затем разобрать формат msi в Wix, используя dark.exe (wix decompiler). Получаемая разметка Wix может быть добавлена ​​в ваш проект.

0

Я пробовал как тепло, так и regspy, упомянутое @Glytzhkof, но обнаружил, что также не было полного извлечения всей информации реестра для моего COM-сервера. Однако я нашел утилиту - RegSpyUI - такие корабли с InstallShield, которые сделали прекрасную работу. Описано более подробно here.

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