如何运行一个批处理文件并保持控制台窗口隐藏?

8

我希望在安装完成后启动已成功安装的Java程序。我知道原理:

[Run]
FileName: "{app}\LaunchApp.bat"; Description: {cm:LaunchApp}; Flags: nowait postinstall skipifsilent

LaunchApp.bat:

start javaw -jar  MyJar.jar Main

这种方式会导致控制台窗口短暂地弹出,这并不太好。使用链接可以避免这种情况。然而,在[Icon]中创建的链接在[Run]部分无法执行。
有什么建议来解决这个问题吗?

1
由于批处理文件/命令解释器显示了窗口,因此您应该找到一种方法来阻止其出现(因为手动运行时它也会执行相同的操作)。要在Inno中隐藏它,请像TLama建议的那样使用“runhidden”。 - Deanna
1
谢谢你的回答!我是通过创建符号链接来实现的!这样,命令提示符就不会出现了。正如我在问题中提到的那样,我无法在[运行]部分运行符号链接。 - mort
嗯,符号链接与快捷方式/lnk文件非常不同。 - Deanna
抱歉,我当然是指快捷方式/lnk文件... - mort
2个回答

18

尝试添加runhidden标志。 从参考文献中得知:

如果指定此标志,则会在隐藏窗口中启动程序。在执行可能提示用户输入的程序时,永远不要使用此标志。

因此,这应该解决您的问题:

[Run]
FileName: "{app}\LaunchApp.bat"; Description: {cm:LaunchApp}; Flags: nowait postinstall runhidden skipifsilent

1
你可以完全避免使用批处理文件,而是使用适当的参数直接运行java.exe。 但这并不能帮助用户正常运行批处理文件时出现的窗口。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接