【发布时间】:2018-10-11 21:05:58
【问题描述】:
我正在尝试从 NSIS 安装程序以静默方式异步执行批处理文件。我希望它保持沉默以防止用户关闭它,并且我希望它是异步的,以便安装程序在批处理文件仍在运行时自动关闭。这个想法是让批处理文件删除安装程序作为实现自删除安装程序的一种方式。但是这个问题具体是关于批处理文件的执行。
我可以使用nsExec::Exec 静默执行批处理文件,也可以使用Exec 异步执行批处理文件。我正在尝试通过使用ExecShell 来完成这两项工作,但它不起作用。无论我传递什么,show type 参数似乎都被忽略了。为了确认这不仅限于批处理文件和SW_HIDE,我尝试打开一个最小化的简单文本文件,但仍然无法做到。
ExecShell "" "path.txt" SW_SHOWMINIMIZED
ExecShell "open" "path.txt" SW_SHOWMINIMIZED
这两个选项都只是在普通的非最小化窗口中打开写字板(我的默认设置)。我尝试过请求管理员权限并隐藏安装详细信息,但似乎没有任何效果。我能做什么?
【问题讨论】:
-
将 .txt 和 WordPad 混入其中是很不幸的,因为它依赖于 shell 注册,而 WordPad 也可以随意忽略您的请求。请发布一个简单的批处理文件示例(
ping localhost或其他)以及您如何执行该示例。另请告诉我们您的 Windows 版本。 -
我使用的是 Windows 10。我认为文本文件和写字板是相当标准的,所以我不知道他们会破坏这个功能。外壳注册也可以在批处理文件中起作用吗?这真的取决于批处理文件的内容吗?
-
如果您假设默认运行批处理文件而不是编辑它等,shell 注册也会弄乱批处理文件。批处理文件的内容并不重要,但它很方便如果其他人需要尝试重现您的问题。
标签: shell batch-file window nsis silent