Запуск исполняемого файла после установщика NSIS - PullRequest
3 голосов
/ 14 ноября 2011

В конце моего установщика я хочу запустить файл .exe, а затем завершить установку.Я пробовал разные способы запуска этого exe, показанного ниже, но ни один из них не совсем прав..Exe-файл вызывает экран входа в систему, и пользователь вводит имя пользователя и пароль, и запускается основное приложение.

Когда я дважды щелкаю по файлу .exe в папке, он вызывает приглашение для входа в систему, я помещаюв учетных данных, и приложение запускается.Для установки этого процесса в установщике были испробованы следующие методы:

ExecDos async

ExecDos::exec /NOUNLOAD /ASYNC '$Path${APP_FILE_NAME}'
Sleep 30000

ExecShell

ExecShell "" '"$Path${APP_FILE_NAME}"'

ExecDos

ExecDos::exec '$Path${APP_FILE_NAME}'

nsExec

nsExec::exec '$Path${APP_FILE_NAME}'

В идеале я хотел бы, чтобы асинхронный вызов работал, чтобы он запускал экран входа в систему, а затем завершал работу установщика.

Все вышеперечисленные методы представляют вход в системуэкран, как и ожидалось, но после входа в приложение, основное приложение просто сидит на пустом сером экране ... чего-то, что я не вижу, просто дважды щелкаю по .exe в папке $ Path и вхожу в систему нормально.

Что-то не так с этими вызовами для запуска .exe?

1 Ответ

6 голосов
/ 15 ноября 2011

Возможно, проблема в вашем приложении, а не в NSIS ...

Если приложение зависит от «правильного» рабочего каталога, вам сначала нужно использовать SetOutPath:

SetOutPath $INSTDIR
ExecShell "" '"$INSTDIR\myapp.exe"'

Выполнение основного приложения в конце программы установки проблематично, так как это может привести к тому, что приложение будет запущено как неправильный пользователь (UAC включен, вошел в систему как пользователь без прав администратора и имеет права администратора (если вы не установили *) 1006 * или б * у RequestExecutionLevel admin))

...