【问题标题】:Execute program with output redirection from Inno Setup使用 Inno Setup 的输出重定向执行程序
【发布时间】:2020-02-26 19:07:43
【问题描述】:

我正在尝试在卸载时进行数据库备份,但由于某种原因,带有重定向的程序在 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】:

    这似乎是:
    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;
    

    【讨论】:

      猜你喜欢
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多