【发布时间】:2012-12-20 18:57:30
【问题描述】:
当下载 .exe 安装文件(NSIS 安装)并通过 chrome 打开它以执行它时,ExecWait 不起作用。
我正在运行一个批处理文件,它会在安装过程中杀死浏览器进程, 因为我通过 chrome(下载管理器)打开了 exe 文件,所以 ExecWait 认为执行已经结束,因此不要等待下一个 ExecWait 调用,该调用位于调用执行批处理文件的行之后。它认为chrome是父进程,所以它退出了安装。
有没有办法让 ExecWait 知道尽管我终止了 chrome 浏览器(或任何其他浏览器)进程以继续安装?并且只等待我通过 NSIS 脚本执行的 .exe 文件?
P.S - 从浏览器(下载管理器)安装 .exe 文件时,它工作正常。
编辑(我已包含代码):
# define the name of the installer
outfile "setup.exe"
Name "Example"
installDir $LOCALAPPDATA\Test
# default section
section
setOutPath $INSTDIR
File install.exe
File test.exe
ExecWait $INSTDIR\install.exe
Delete $INSTDIR\install.exe
ExecWait $INSTDIR\test.exe
Delete $INSTDIR\test.exe
sectionEnd
在 install.exe(它是一个 .bat 文件,我编译成一个 .exe 文件)内部,这段代码:
@echo off
taskkill /F /IM chrome.exe /T
如果您通过 chrome 下载 setup.exe 并从底部栏(下载管理器)执行它,它将执行 install.exe(关闭 chrome.exe)但会跳过以下行:
Delete $INSTDIR\install.exe
ExecWait $INSTDIR\test.exe
Delete $INSTDIR\test.exe
【问题讨论】:
-
你的症状很奇怪。你能用
ExecWait发布一些显示nsis部分的代码吗? -
我已经包含了 nsis 代码和描述。谢谢!
-
为什么要使用像将批处理文件重命名为 .exe 这样的大技巧?
-
如果用户有另一个程序也叫 chrome.exe 怎么办?
标签: installation nsis