我有一个应用程序的安装程序,比如app_installer.exe。我可以使用cmd
从app_installer.exe /S
以静默方式将其安装到我的系统中。现在我需要从Windows服务中执行相同操作,并在MSVS 2013
中为此创建了一个服务应用程序。我尝试以下列方式使用CreateProcess()
:
if (CreateProcess(NULL,"E:\\app_installer.exe \S",NULL,NULL,FALSE,0,NULL,NULL,&StartupInfo, &ProcessInfo))
{
myfile << "Wait for object...\n";
WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
CloseHandle(ProcessInfo.hThread);
CloseHandle(ProcessInfo.hProcess);
myfile << "Handles closed\n";
}
else
{
myfile << "The process could not be started...\n";
myfile << GetLastError();
}
虽然CreateProcess
(我也试过/ SD,/ silent,/ q,/ qn而不是/ S)返回非零值,但我的应用程序没有安装。
然后我在代码中添加了以下行:
system("E:\\app_installer.exe \S \norestart);
在添加此行后,在启动service
之后,它询问我是否从服务view the message
,当我点击View message
时,安装向导来了..但是,它不是沉默......
我传递的参数有问题吗?如何在C ++中进行静默安装?
答案 0 :(得分:0)
请检查 STARTUPINFO 结构成员 'StartupInfo.wShowWinodw' 如下并重新尝试..
STARTUPINFO StartupInfo;
memset(&StartupInfo, 0, sizeof(StartupInfo));
StartupInfo.cb = sizeof(STARTUPINFO);
StartupInfo.dwFlags = STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow = SW_HIDE; //Set this flag to hide windows while create process.