У меня есть установщик NSIS, и я хочу быть полностью бесшумным, если ему не нужно загружать дополнительные файлы. Я могу сделать его полностью бесшумным с помощью SilentInstall, но тогда я не могу открыть диалоговое окно загрузки (я использую InetLoad::load).
Я хотел бы сказать NSIS не показывать никаких окон, пока я не скажу. Лучшее, что я могу придумать, это HideWindow. К сожалению, похоже, что NSIS по умолчанию показывает окно, а затем скрывает его, вызывая мерцание.
Как я могу предотвратить мерцание окна?
Пример кода:
Name "Flicker test"
OutFile "flickertest.exe"
AutoCloseWindow true
Section
HideWindow
SectionEnd
Ответ 1 · рейтинг 3 · djp
Это хак способ сделать это:
!include "${NSISDIR}\Examples\System\System.nsh"
Name "No Flicker test"
OutFile "noflickertest.exe"
AutoCloseWindow true
Function .onGUIInit
; move window off screen
System::Call "User32::SetWindowPos(i, i, i, i, i, i, i) b ($HWNDPARENT, 0, -10000, -10000, 0, 0, ${SWP_NOOWNERZORDER}|${SWP_NOSIZE})"
FunctionEnd
Section -main
HideWindow
SectionEnd
Ответ 2 · рейтинг 2 · Zanir
Вы можете использовать пропуск страниц Пример для MUI2 (скрыть страницу каталога, если режим обновлен):
!define MUI_PAGE_CUSTOMFUNCTION_PRE dirPre
!insertmacro MUI_PAGE_DIRECTORY
Function dirPre
StrCmp $Mode "update" +1 +2
abort
FunctionEnd