在我的安装程序结束时,我想启动一个.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中的.exe $ Path文件夹并正常登录。
这些调用启动.exe是否有问题?
答案 0 :(得分:6)
问题可能在于您的申请而非NSIS ......
如果应用程序依赖于“正确”的工作目录,则需要先使用SetOutPath:
SetOutPath $INSTDIR
ExecShell "" '"$INSTDIR\myapp.exe"'
在安装程序结束时执行主应用程序是有问题的,因为它可能最终以错误的用户身份运行应用程序(UAC打开,以非管理员身份登录并使用管理员用户提升(假设您未设置{ {1}}或使用RequestExecutionLevel
))