Как написать загрузочный EXE-файл, который запускает MSIEXEC.EXE и затем ждет его завершения - PullRequest
1 голос
/ 15 июня 2011

Я пытаюсь установить плагин ActiveX, упакованный в nsi в файл cab, и обнаружил проблему.

Журнал

Code Download Error: (hr = 80070005) Access is denied.

ERR: Run Setup Hook: Failed Error Code:(hr) = 80070005, processing: msiexec.exe /package "%EXTRACT_DIR%\TempR.msi"

Я думаю, что это то же самое, что ивот этот:

http://social.msdn.microsoft.com/Forums/en-US/ieextensiondevelopment/thread/3d355fb6-8d6a-4177-98c2-a25665510727/

Я хочу попробовать предложенное там решение, но не знаю, как

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

Может кто-нибудь оказать какую-либо помощь?

Спасибо !!

Ответы [ 2 ]

1 голос
/ 25 апреля 2013

Вот простая оболочка, которая вызывает msiexec.exe для тихой установки msi, переданного в первом параметре командной строки.

Она написана как приложение командной строки Visual C ++:

// InstallMSI.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <Windows.h>
#include <string>

int wmain(int argc, wchar_t* argv[])
{
if(argc < 2) {
    printf("Usage: installmsi.exe <full path to msi file>\n\n");
    printf("Package will be installed using msiexec.exe with the /qn (quiet install) flags.\n");
    return 1;
}

std::wstring args;
args = L"msiexec.exe /i \"";
args += argv[1];
args += L"\" /qn";

PROCESS_INFORMATION pi;
STARTUPINFO si;

ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);

ZeroMemory(&pi, sizeof(pi));

if(!CreateProcess(NULL, (LPWSTR)args.c_str(),
    NULL, NULL, TRUE, NULL, NULL, NULL, &si, &pi)) {
        printf("CreateProcess failed (%d).\n", GetLastError());
        return 2;
}

WaitForSingleObject( pi.hProcess, INFINITE );

CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);

return 0;
}

Надеюсь, это поможет.

0 голосов
/ 16 июня 2011

Взгляните на dotNetInstaller - предварительно написанную программу начальной загрузки, которая делает намного больше, чем вам нужно, но может сделать именно то, что вы просите.

...