我希望我的nsis脚本能够运行命令行,该命令行由我之前在我脚本中的语句成功安装。但它始终无法显示
C:\mypath\SystemMaitainer.exe' is not recognized as an internal or external command, operable program or batch file.
我把相关代码放在" install"部分如下:
Section "install"
// Files copy statements
SectionEnd
Section "command"
nsExec::ExecToLog 'cmd.exe /c "$INSTDIR\SystemMaitainer.exe" -install'
Pop $0
DetailPrint ""
DetailPrint " Return value: $0"
DetailPrint ""
SectionEnd
如何解决我的问题?谢谢!为什么声明关于" nsEXec"总是失败,但命令可以在cmd中成功运行吗?
经过调查,我的脚本可以正常工作,我应该将execwait命令和copy语句放在一起,如下所示:
Section "serverice"
ClearErrors
SetOutPath "$SYSDIR"
file "mycmd.exe"
ExecWait '"$SYSDIR\mycmd.exe" -option'
SectionEnd
但它在Windows 7上完美运行,但在Windows 10上失败,ExecWait无法成功运行,并且没有ret错误消息,请再次帮助我!我非常感谢帮助我的人!
答案 0 :(得分:1)
该错误消息来自cmd.exe。 SystemMaitainer拼写错误,也许这就是问题所在?或者您可能在复制命令周围禁用了WOW64重定向,但没有禁用exec命令?
如果您没有进行stdout重定向,则不必使用FileStream fop = File.OpenRead(@"C:\test.bin");
string chksum = BitConverter.ToString(System.Security.Cryptography.SHA1.Create().ComputeHash(fop));
为命令添加前缀。
$ SysDir很特殊,因为64位系统上有两个system32目录。
您可以使用cmd /c
或x64.nsh中的宏访问32位进程中的64位system32目录:
$WinDir\SysNative\