从Inno Setup执行带有输出重定向的程序

问题描述 投票:1回答:1

我正在尝试在卸载时进行数据库备份,但是由于某些原因,带有重定向的程序在Inno Setup中始终会失败。这是我所拥有的:

[Run]
Filename: "{#DB_PATH}\mysqldump.exe"; \
  Parameters: "-c --compact {#DB_NAME} > {#STORAGE_PATH}\db.sql";  Flags: runhidden;
Filename: "xcopy";                     \
  Parameters: "{#STORAGE_PATH} {userdesktop}\Backup\ /E/H"; Flags: runhidden;
Filename: "{#DB_PATH}\mysqladmin.exe"; \
  Parameters: "shutdown"; Flags: runhidden;

最后两个命令正常工作。但是第一个由于某种原因永远不会起作用。我已经测试了该命令,它可以正常工作。

我不确定是否做错了任何事情,我们将不胜感激。

installation inno-setup io-redirection
1个回答
1
投票

这似乎是:How does output redirection work in Inno Setup?

相差不大,您使用的是[Run]部分,而不是Pascal脚本代码。

输出重定向语法是命令提示符的功能,而不是核心Windows API。因此,如果要重定向输出,则需要通过{cmd} /c actual-command-line > output-file调用命令。

所以应该是:

Filename: "{cmd}"; \
  Parameters: "/C {#DB_PATH}\mysqldump.exe -c --compact {#DB_NAME} > {#STORAGE_PATH}\db.sql"; \
  Flags: runhidden;

但是您也应该引用所有路径(并且由于cmd.exe使用的语法晦涩,所以您还需要引用整个命令):

Filename: "{cmd}"; \
  Parameters: "/C """"{#DB_PATH}\mysqldump.exe"" -c --compact {#DB_NAME} > ""{#STORAGE_PATH}\db.sql"""""; \
  Flags: runhidden;
© www.soinside.com 2019 - 2024. All rights reserved.