2015-10-09 5 views
0

Мы используем исполняемый исполняемый файл сервера com. Чтобы exe работал правильно, нам нужно использовать эту команду.Регистрация COM-сервера - скрыть всплывающее окно

Это может быть выполнено в командной строке или run.exe и т.д ... [pathtofile] \ filename.exe/RegServer или [pathtofile] \ filename.exe/unregserver

После этого вы получите MessageBox. «Компонент успешно зарегистрирован»

Проблема в том, что это блокирует наш InstallShield, и для его установки требуется manuel ok для продолжения установки. Такое поведение мы не хотим для бесшумной установки.

Кто-нибудь знает идею, как подавить это всплывающее окно? Я знаю, что это можно сделать для регистрации dll с помощью regsvr32. Однако для com exe я не мог найти ничего, что подавляет его. Зарегистрировать его с помощью RegSvr32 здесь не вариант, так как это не будет работать для нашего exe.

Спасибо за помощь!

Сердечные приветы

Céderic

+0

'regsvr32/s ...' –

+0

Довольно шаблонный для монтажника, чтобы заботиться о записи ключей реестра вместо того, чтобы оставить его до самого приложения. Не в последнюю очередь потому, что для этого требуется высота UAC, и вы получаете только один выстрел в нее. Google «собирает ключи реестра» для хитов. И посмотрите на [этот] (http://helpnet.installshield.com/installshield16helplib/FAQCustomActionsLaunchExe.htm). –

+0

@ RomanR.Like Я сказал в вопросе, что это com «exe», что мне нужно зарегистрировать не com dll. Поэтому regsvr32/s здесь не вариант. –

ответ

1

я узнал, что ехе я использую regged самой ехе .... Поэтому невозможно заставить его замолчать и т. Д. Иногда это возможно, но он должен быть встроен компилятором, который создает exe.

Я сделал этот vbscript, чтобы добавить к моему проекту IS как пользовательское действие и прекрасно работает.

Set oShell = CreateObject("WScript.Shell") 
oShell.CurrentDirectory = "[YOURAPPINSTALLDIR]" 

'You can check here if the exe exits or not to execute to code below - not implemented in this example 
oShell.Run "[YOURAPP].exe /regserver", 0, False 


Set oShell = CreateObject("WScript.Shell") 

While oShell.AppActivate("[YOUR WINDOW TITLE]") = False 
    'WScript.Sleep 100 (does not work in IS) 
Wend 
oShell.SendKeys "{ENTER}" 
Смежные вопросы