使用C ++以编程方式执行静默安装

时间:2015-07-24 09:59:18

标签: c++ visual-studio windows-services exe silent-installer

我有一个应用程序的安装程序,比如app_installer.exe。我可以使用cmdapp_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 ++中进行静默安装?

1 个答案:

答案 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.