【问题标题】:Create Batch file for iexpress为 iexpress 创建批处理文件
【发布时间】:2012-05-14 00:03:03
【问题描述】:

我正在尝试使用iexpress 运行我的批处理文件,该批处理文件将为我执行 2 个 exe 和 1 个 msi 文件。当我尝试手动执行时,它可以工作。

以下是我的批处理文件中的代码。

Start /wait %CD%\1.exe /q
Start /wait %CD%\2.exe /q
msiexec.exe /i "%CD%\3.msi" 

但是当我从 iexpress 创建一个 exe 文件时,这似乎不起作用。

Reference

上面提到的文章有一些代码(将文件复制到临时文件夹)&但我无法理解语法。

MKDIR %Tmp%\<UNIQUE PRODUCT NAME>
XCOPY . %Tmp%\<UNIQUE PRODUCT NAME> /S /E /Y
%Tmp%\<UNIQUE PRODUCT NAME>\setup.exe

【问题讨论】:

    标签: c# installation exe silent iexpress


    【解决方案1】:

    问题是,正如您从屏幕截图中看到的那样,批处理文件是由command.com 执行的,而不是cmd.exe。 (如果你不指定解释器,IExpress 使用command.com。哎哟。)所以没有像%cd%%~dp0 这样的变量。

    无论如何,您可能都不需要它们。但是您确实需要在 IExpress 中显式执行批处理文件,例如:

    cmd.exe /c file.bat
    

    以便它使用现代命令解释器。

    您问题中的第二段代码通过xcopy将文件保存到不同的目录,使文件持久化(即它们不会在 IExpress 存档终止后被删除)。

    【讨论】:

      【解决方案2】:

      这是什么意思:

      1)%TMP%环境变量中存储的路径中创建一个名为“UNIQUE PRODUCT NAME”的目录(MKDIR),该路径通常指向:C:\DOCUME~1 \你的用户名\LOCALS~1\Temp

      MKDIR %Tmp%\<UNIQUE PRODUCT NAME>
      

      2) 然后递归地将当前文件夹中的所有安装文件复制到之前创建的新文件夹中。 XCOPY 参数:

      /S 复制目录和子目录,空目录除外。

      /E 复制目录和子目录,包括空目录。 与/S /E 相同。可用于修改/T

      /Y 禁止提示确认您要覆盖 现有目标文件。

      XCOPY . %Tmp%\<UNIQUE PRODUCT NAME> /S /E /Y
      

      3) 最后从新位置执行应用程序 %Tmp%\\setup.exe

      希望对你有帮助

      【讨论】:

      • 感谢您的解释..但我没有帮助我解决问题
      • 您的最新脚本看起来如何?您是否仍然收到问题中显示的相同错误消息?
      【解决方案3】:

      尝试将%CD% 替换为%~dp0

      假设 1.exe 与您的批处理脚本位于同一文件夹中。

      【讨论】:

      • 我认为这是因为您从 APPDATA 临时目录运行它。你能把批处理脚本和exe移到别的地方试试吗?
      • 我无法控制它。临时目录由 iexpress 工具本身选择。
      • 都不行,因为这都是从command.com 运行的。批处理文件必须通过cmd /c 启动才能运行。
      【解决方案4】:

      您的 %CD% 不工作。请确保已启用 CMD 扩展(键入 CMD /x 启用和 CMD /y 禁用)然后使用此代码展开 %CD%

      SET CURDIR=%CD%
      Start /wait "%CURDIR%\1.exe" /q 
      Start /wait "%CURDIR%\2.exe" /q 
      msiexec.exe /i "%CURDIR%\3.msi" 
      

      出于安全原因,我不确定您是否可以从该位置 (APPDATA) 启动 exe。

      【讨论】:

      • %cd% 不起作用,因为脚本是通过command.com 执行的,如上面的屏幕截图所示。如果脚本通过cmd /c 执行,那么%cd% 将起作用。
      • 嗯,这是相当古老的,但可能你是对的。为您的回答 +1
      【解决方案5】:

      非常感谢这个论坛的讨论。终于我可以在一个 .exe 文件中编译所有 msi 文件和可执行文件了。

      完成过程如下创建一个批处理文件

      echo on

      SET CURDIR=%CD%

      msiexec.exe /i "%CURDIR%\1.msi"

      "%CURDIR%\3.EXE"

      "%CURDIR%\setup.exe"

      echo off

      您可以随意排列任意数量的 exe 文件或 msi 文件,并将批处理文件保存为 yourfile.bat。 现在棘手的部分是在您继续Iexpress之前,使用http://www.f2ko.de/programs.php?pid=b2e提供的软件将批处理文件转换为exe文件

      现在,当您运行程序时,请选中“不可见的应用程序”以隐藏命令提示符。您还可以使用密码加密您的 exe。“退出时删除”作为临时文件夹是可选的文件执行完成后会自动删除。 成功编译批处理文件后,执行创建的 .exe 文件。 答对了!!您将看不到命令​​提示符窗口,并且您的应用程序开始按顺序执行。

      启动您的 Iexpress 工具并添加批处理文件中存在的所有文件(批处理文件除外)。在“安装程序以启动”屏幕上,将安装后命令留空并找到以下内容在安装程序下拉列表中:'demo.exe' 并继续创建完整的单个包。干杯!!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-31
        • 2013-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多