在某些条件下,您需要在安装后运行一个命令。附上AfterInstall,写了一个小程序,经过一定的操作,最后执行如下:
line := '/k "C:\Program Files\MongoDB\Server\4.0\bin\mongorestore.exe" -d test-db "C:\Users\test\Desktop\database\test-db"';
ShellExec('', 'cmd.exe', line, '', SW_SHOW, ewWaitUntilTerminated,ResultCode);
但是,如果我从命令中删除第二个路径参数,并使其看起来像这样:
'/k "C:\Program Files\MongoDB\Server\4.0\bin\mongorestore.exe" -d test-db'
然后一切立即开始工作,系统确定要启动的进程,一切正常。此外,如果您从第二条路径中删除引号(前提是路径中没有空格),那么工作也是正确的。但是,事实是我无法确定路径中是否会有空格,所以我将任何路径都用引号引起来。而且,如果通过将启动的进程的路径用引号括起来,我没有遇到问题,那么通过将进程参数的路径用引号括起来,我会看到上面屏幕截图中显示的内容。为什么会发生这种情况以及如何治愈?谢谢你。
事实证明,为了能够在一个字符串中使用多对双引号,您还应该将整个字符串用双引号括起来: