От WxWidgets приложение, которое я пытаюсь запустить установщик, сделано с NSIS, в беззвучном режиме (/ S флаг). Получил эту ошибку:
Выполнение команды: «C: \ somecommand.exe» не удалось (ошибка 0: Операция
завершена успешно
Когда я запускаю установщик в режиме без вывода сообщений из командной строки, я получаю всплывающее окно UAC, но когда я запускаю его из приложения wxWidget, я получаю только эту ошибку. А что означает эта ошибка? Как «Фатальная ошибка: все в порядке».
В NSIS скрипт у меня есть RequestExecutionLevel admin, потому что мне действительно нужно иметь возможность устанавливать программы в каталогах, таких как Program Files.
Чтобы запустить приложение Windows, требующее повышения прав, вы должны использовать ShellExecute и не CreateProcess, CreateProcess просто завершится ошибкой с необходимостью повышения прав.
Я полагаю, что wxLaunchDefaultApplication
использования ShellExecute
внутренне, но кажется немного рискованным полагаться на это, так что вы также можете использовать ifdef:
#ifdef __WINDOWS__ // __WXMSW__
ShellExecute(0, 0, pathtoexe, parameters, 0, SW_SHOW);
#else
wxExecute(something);
#endif