5

我试图用来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 文件时,这似乎不起作用。 在此处输入图像描述

参考

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

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

5 回答 5

2

这是它的意思:

1)在存储在环境变量中的路径中创建一个MKDIR名为“UNIQUE PRODUCT NAME”的目录(),该路径%TMP%通常指向:C:\DOCUME~1\yourusername\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 执行应用程序

希望这可以帮助

于 2012-05-04T12:42:47.657 回答
2

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

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

cmd.exe /c file.bat

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

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

于 2012-12-04T21:48:30.670 回答
0

尝试替换%CD%%~dp0

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

于 2012-05-04T12:40:52.690 回答
0

您的 %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。

于 2012-05-04T12:43:13.713 回答
0

非常感谢这个论坛的讨论。最后我可以在一个 .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。'Delete at Exit'是可选的,因为当文件执行完成时临时文件夹将被自动删除。成功编译批处理文件后,执行创建的 .exe 文件。答对了!!您将看不到命令​​提示符窗口,并且您的应用程序开始按顺序执行。

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

于 2013-09-25T10:39:59.237 回答