1) В наше время почти никогда. Если это хорошая идея, чтобы встроить функцию, компилятор сделает это без вашей помощи.
2) Всегда. См. № 1.
(Отредактировано с учетом того, что вы нарушили свой вопрос на два вопроса ...)
Попробуйте добавить флаг runhidden
. Из ссылки:
Если этот флаг указан, он запустит программу в скрытом окне. Никогда не используйте этот флаг при выполнении программы, которая может запрашивать ввод пользователя.
blockquote>Поэтому это должно решить ваш вопрос:
[Run] FileName: "{app}\LaunchApp.bat"; Description: {cm:LaunchApp}; Flags: nowait postinstall runhidden skipifsilent
Вы можете вообще избежать пакетного файла и запустить java.exe
с соответствующими параметрами. Это не поможет появлению окна, когда пользователь обычно запускает пакетный файл.