в общем мне нужно средствами SCM запустить установку msi пакета, то есть я подключаюсь к удаленной машине
OpenSCManager()
и там хочу открыть службу установки WindowsInstaller с параметрами, то есть указать от куда установить msi пакет.
к компу подключаюсь, но как запустить службу с параметрами установки не знаю, ничего не могу найти,
если кто сталкивался, или знает как решить проблему, подскажите.
спасибо за ответ.
14.07.09 17:56: Перенесено модератором из 'C/C++' — Кодт
Здравствуйте, duncanmclaud, Вы писали:
D>хочу запустить службу с параметрами, к примеру можно написать в консоли -
D>msiexec /i C:\Share_install\VyChat21.msi /qn
D>или как я думал на С++ можно вот так
D>LPCWSTR* pTemp = new LPCWSTR[2]; D>pTemp[0] = L"/i C:\Share_install\VyChat21.msi"; D>pTemp[1] = L"/qn";
D>StartService(hService, 2,pTemp)
D>в общем мне нужно средствами SCM запустить установку msi пакета, то есть я подключаюсь к удаленной машине D>OpenSCManager() D>и там хочу открыть службу установки WindowsInstaller с параметрами, то есть указать от куда установить msi пакет.
D>к компу подключаюсь, но как запустить службу с параметрами установки не знаю, ничего не могу найти, D>если кто сталкивался, или знает как решить проблему, подскажите.
D>спасибо за ответ.
Здравствуйте, fuyant, Вы писали:
F>Здравствуйте, duncanmclaud, Вы писали:
D>>хочу запустить службу с параметрами, к примеру можно написать в консоли -
D>>msiexec /i C:\Share_install\VyChat21.msi /qn
D>>или как я думал на С++ можно вот так
D>>LPCWSTR* pTemp = new LPCWSTR[2]; D>>pTemp[0] = L"/i C:\Share_install\VyChat21.msi"; D>>pTemp[1] = L"/qn";
D>>StartService(hService, 2,pTemp)
D>>в общем мне нужно средствами SCM запустить установку msi пакета, то есть я подключаюсь к удаленной машине D>>OpenSCManager() D>>и там хочу открыть службу установки WindowsInstaller с параметрами, то есть указать от куда установить msi пакет.
D>>к компу подключаюсь, но как запустить службу с параметрами установки не знаю, ничего не могу найти, D>>если кто сталкивался, или знает как решить проблему, подскажите.
D>>спасибо за ответ.
F>MsiInstallProduct
так это на локальной машине, а как на удаленной? для этого специально подключаюсь к SCM серверу на удаленной машине, осталось разобраться как запустить службу инсталлера с параметрами.
D>>>msiexec /i C:\Share_install\VyChat21.msi /qn
.. — это не есть запуск службы с параметрами. Это запускает просто процесс msiexec с указанными параметрами, этот процесс просто стартует службу MSIServer (тот же msiexec) с обычными параметрами (на самом деле он создает COM объект, реализующий недокументированный IMsiServer интерфейс) и потом скармливает переданные параметры сервису через IPC (через методы полученного out-of-process COM stub'а)
Как много веселых ребят, и все делают велосипед...
D>так это на локальной машине, а как на удаленной? для этого специально подключаюсь к SCM серверу на удаленной машине, осталось разобраться как запустить службу инсталлера с параметрами.
Здравствуйте, fuyant, Вы писали:
D>>так это на локальной машине, а как на удаленной? для этого специально подключаюсь к SCM серверу на удаленной машине, осталось разобраться как запустить службу инсталлера с параметрами.
F>извините, не вчитался толком F>тогда так F>Вот, к примеру: Installing Software on a Remote Computer
да так я сделал, почти так...
там один трабл был если запускать с компа А, установить на комп Б, а инсталятор на компе В, то с правами проблема, я просто на компе Б искал расшаренную папку, копировал туда msi пакет, и устанавливал, но стоит задача не только средствами WMI сделать, а и средствами SCM, то есть если WMI сервис выключен, то тогда делать другим методом, в данном случае с помощью служб, стартовать, останавливать удаленно службы умею, не могу параметр передать, если конечно можно, хотя в StartService есть параметр, но как его правильно передать чтобы служба его не игнорировала не знаю,
если запустить Администрирование — Службы
потом выбрать службу Windows Installer то в свойствах есть edit — Параметры запуска, так вот как хотя бы туда передать, даже просто руками написать в этите том правильные параметры, и нажать старт службы чтобы к примеру с диска С:\install\1.msi запустился на установку пакет. Если там пишешь параметры как в командной строке то служба стартует но ничего не запускает.
Re: Запуск службы с параметрами
От:
Аноним
Дата:
15.07.09 12:37
Оценка:
Здравствуйте, duncanmclaud, Вы писали:
D>хочу запустить службу с параметрами
Здравствуйте, duncanmclaud, Вы писали:
D>к компу подключаюсь, но как запустить службу с параметрами установки не знаю, ничего не могу найти, D>если кто сталкивался, или знает как решить проблему, подскажите.
Там есть два места, куда можно прописать параметры: одно, это командная строка в реестре, другое — третий аргумент функции StartService(). И передаются они сервису по-разному. Соответственно, надо смотреть, откуда ваш сервис умеет из забирать, и через это место и передавать.
Re[2]: Запуск службы с параметрами
От:
Аноним
Дата:
17.07.09 08:22
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, duncanmclaud, Вы писали:
D>>хочу запустить службу с параметрами
А>psexec ? Жаль сорцов не отдают
Там довольно просто — на удалённую машину копируется исполняемый файл службы (он там в ресурсах лежит), инсталлируется и запускается. Далее связываются со службой по именованному каналу, если правильно помню, и дают ей команду на запуск нужного экзешника.
Re: Запуск службы с параметрами
От:
Аноним
Дата:
17.07.09 08:29
Оценка:
Здравствуйте, duncanmclaud, Вы писали:
D>хочу запустить службу с параметрами, к примеру можно написать в консоли -
D>msiexec /i C:\Share_install\VyChat21.msi /qn
D>или как я думал на С++ можно вот так
D>LPCWSTR* pTemp = new LPCWSTR[2]; D>pTemp[0] = L"/i C:\Share_install\VyChat21.msi"; D>pTemp[1] = L"/qn";
D>StartService(hService, 2,pTemp)
D>в общем мне нужно средствами SCM запустить установку msi пакета, то есть я подключаюсь к удаленной машине D>OpenSCManager() D>и там хочу открыть службу установки WindowsInstaller с параметрами, то есть указать от куда установить msi пакет.
D>к компу подключаюсь, но как запустить службу с параметрами установки не знаю, ничего не могу найти, D>если кто сталкивался, или знает как решить проблему, подскажите.
D>спасибо за ответ.
А на локальной машине получаете параметры? Если нет, покажите код, которым пытаетесь их получить в службе. И ещё, Вы точно уникодную версию StartService вызываете?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, duncanmclaud, Вы писали:
D>>хочу запустить службу с параметрами, к примеру можно написать в консоли -
D>>msiexec /i C:\Share_install\VyChat21.msi /qn
D>>или как я думал на С++ можно вот так
D>>LPCWSTR* pTemp = new LPCWSTR[2]; D>>pTemp[0] = L"/i C:\Share_install\VyChat21.msi"; D>>pTemp[1] = L"/qn";
D>>StartService(hService, 2,pTemp)
D>>в общем мне нужно средствами SCM запустить установку msi пакета, то есть я подключаюсь к удаленной машине D>>OpenSCManager() D>>и там хочу открыть службу установки WindowsInstaller с параметрами, то есть указать от куда установить msi пакет.
D>>к компу подключаюсь, но как запустить службу с параметрами установки не знаю, ничего не могу найти, D>>если кто сталкивался, или знает как решить проблему, подскажите.
D>>спасибо за ответ.
А>А на локальной машине получаете параметры? Если нет, покажите код, которым пытаетесь их получить в службе. И ещё, Вы точно уникодную версию StartService вызываете?
в смысле? я написал тестовую службу, и когда таким образом ей передаю параметры, то служба их получает.
Re[3]: Запуск службы с параметрами
От:
Аноним
Дата:
22.07.09 01:48
Оценка:
Здравствуйте, duncanmclaud, Вы писали:
D>в смысле? я написал тестовую службу, и когда таким образом ей передаю параметры, то служба их получает.
То есть у Вас проблема, когда Вы таким образом пытаетесь управлять "чужой" службой? Но ведь тогда ответ очевиден, разве нет? Эта служба просто игнорирует переданные ей параметры, и изменить это Вы не сможете.