nsis安装程序在后台启动

时间:2016-04-08 16:06:08

标签: installer nsis

我知道之前曾问过这个问题。但我仍然有问题。我无法找到适合我的解决方案。

我尝试了什么

  • 使用 BringToFront
  • 从.OnInit函数
  • 中删除所有内容
  • 完全删除.OnInit功能

我的代码就像这样开始

!define MUI_WELCOMEPAGE_TITLE_3LINES
!define MUI_PAGE_CUSTOMFUNCTION_PRE wel_pre
!define MUI_PAGE_CUSTOMFUNCTION_SHOW wel_show
!insertmacro MUI_PAGE_WELCOME
!define MUI_PAGE_CUSTOMFUNCTION_PRE lic_pre
!define MUI_PAGE_CUSTOMFUNCTION_SHOW lic_show
!insertmacro MUI_PAGE_LICENSE "$(LICENSE_TEXT)"

我还缺少什么或需要做更多其他事情?

1 个答案:

答案 0 :(得分:0)

在Windows 8上使用和不使用STARTF_USESHOWWINDOW时,它对我有效:

PROCESS_INFORMATION pi;
STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOW;
TCHAR cmd[1+MAX_PATH+1+1];
ExpandEnvironmentStrings(TEXT("\"%Temp%\\NSISTest.exe\""), cmd, ARRAYSIZE(cmd));
if (CreateProcess(NULL, cmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
{
    WaitForSingleObject(pi.hProcess, INFINITE);
    CloseHandle(pi.hThread);
    CloseHandle(pi.hProcess);
}

也许您可以提供有关您的申请的更多信息?调用CreateProcess时是否有可见窗口?这个窗口是前景窗口吗?

您可以调用AllowSetForegroundWindow(ASFW_ANY)来释放前景锁,但不一定非必要。