2016-04-08 9 views
-1

Ich weiß, diese Frage wurde zuvor gestellt. Aber ich habe immer noch das Problem. Ich war nicht in der Lage, eine Lösung zu finden, die für mich funktioniert.nsis Installer startet im Hintergrund

Was ich

  • Verwenden BringToFront
  • versucht haben, entfernen Alles aus .OnInit Funktion
  • Remove .OnInit Funktion vollständig

Mein Code beginnt wie dieses

!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)" 

Alles andere, was ich vermisse oder noch tun muss?

+0

Wie starten Sie den Installer? Doppelklicken Sie im Explorer? – Anders

+0

Eine andere Anwendung startet mein Installationsprogramm. – Vivek

+0

Wie lautet der Name dieser anderen Anwendung? Verwendet es CreateProcess oder ShellExecute? Wird es nach dem Start des Installers beendet oder versteckt? – Anders

Antwort

0

Es funktioniert gut für mich mit und ohne STARTF_USESHOWWINDOW auf Windows 8:

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); 
} 

Vielleicht könnten Sie mehr Informationen über Ihre Anwendung? Hat es ein sichtbares Fenster, wenn CreateProcess aufgerufen wird? Ist dieses Fenster das Vordergrundfenster?

Sie könnten AllowSetForegroundWindow(ASFW_ANY) aufrufen, um die Vordergrundsperre freizugeben, dies sollte jedoch nicht notwendig sein.

+0

Ich habe keinen Zugriff auf diesen Code, wahrscheinlich muss ich dort einchecken. – Vivek