2015-12-07 2 views
0

У меня возникли проблемы с получением MSI для установки «тихо». Я могу получить MSI работать в нормальном режиме, так как:Quiet MSI Exec from Shell Execute

TCHAR argmnt[] = TEXT("open"); 
TCHAR username[UNLEN + 1]; 
DWORD size = UNLEN + 1; 
GetUserName((TCHAR*)username, &size); 
wchar_t run[256]; 
wcscpy_s(run, L"C:\\Users\\"); 
wcscat_s(run, username); 
wcscat_s(run, L"\\AppData\\Local\\Temp\\index.msi"); 
ShellExecute(NULL, argmnt, run, NULL, NULL, SW_SHOW); 

Но если добавить «/ тихий» до последней строки следующим образом:

wcscat_s(run, L"\\AppData\\Local\\Temp\\index.msi /quiet"); 

Он не будет устанавливать MSI на всех. Я пытался добавить переменную TCHAR с аргументами, как это:

TCHAR params[] = TEXT("/quiet"); 

С обновленной ShellExecute, как это:

ShellExecute(NULL, argmnt, run, params, NULL, SW_SHOW); 

Кто-нибудь есть какие-нибудь идеи?

+0

сделал вам попробовать довольно переключатель в «argmnt» –

+0

@LuckyChingi Да, это не работает. – JLegendre

+0

извините! 4-й вариант является параметром - HINSTANCE ShellExecute ( _In_opt_ HWND HWND, _In_opt_ LPCTSTR lpOperation, _In_ LPCTSTR lpFile, _In_opt_ LPCTSTR lpParameters, _In_opt_ LPCTSTR lpDirectory, _In_ INT nShowCmd ); –

ответ

0

Файл Msi не является исполняемым файлом, поэтому попробуйте перейти к параметру run «msiexec.exe» и параметру path в ваш файл msi с помощью/qn (полная тишина) или/qb (только с индикатором выполнения):

wcscpy_s(run, "msiexec.exe"); 
wcscpy_s(params, L"C:\\Users\\"); 
wcscpy_s(params, username); 
wcscpy_s(params, L"\\AppData\\Local\\Temp\\index.msi /qn");