2016-04-08 29 views
-1

Bu sorunun daha önce sorulduğunu biliyorum. Ama hala problemim var. Benim için çalışan bir çözüm bulmayı başaramadım. Bennsis yükleyici arka planda başlıyor

  • Kullanım BringToFront
  • denedi Ne

    Kaldır .OnInit işlevinden herşey

  • Kaldır .OnInit işlevi tamamen

Benim kod bu

!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)" 
gibi başlar

Başka bir şey eksik veya daha fazla şey yapmam gerekiyor mu?

+0

Yükleyiciyi nasıl başlatıyorsunuz? Explorer'da çift tıklatarak mı? – Anders

+0

Başka uygulamalar benim yükleyicimi başlatır. – Vivek

+0

Bu diğer uygulamanın adı nedir? CreateProcess veya ShellExecute kullanıyor mu? Yükleyiciyi çalıştırdıktan hemen sonra çıkılıyor mu yoksa gizleniyor mu? – Anders

cevap

0

Windows 8 ile ve STARTF_USESHOWWINDOW olmadan benim için çalışıyor:

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

Belki de uygulama hakkında biraz daha bilgi verebilir

? CreateProcess çağırdığında görünür bir pencere var mı? Bu pencere ön plan penceresi mi?

Önalan kilidini serbest bırakmak için AllowSetForegroundWindow(ASFW_ANY)'u arayabilir ancak gerekli olmamalıdır.

+0

Bu koda erişimim yok, muhtemelen orayı kontrol etmem gerekiyor. – Vivek