为iexpress创建批处理文件

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
5个回答

3
问题在于,从您的截图中可以看出,批处理文件由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\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

希望这可以帮到你


感谢解释,但是它没有帮助我解决问题。 - Sangram Nandkhile
你最新的脚本是什么样子?你还是看到了你问题中提到的同样的错误信息吗? - Adolfo Perez

0
尝试用%~dp0替换%CD% 假设1.exe与批处理脚本在同一个文件夹中。

我认为这是因为你正在从APPDATA临时目录运行它。你能否将批处理脚本和exe移动到其他地方并尝试? - Fiona - myaccessible.website
我无法控制它。临时目录是由iexpress工具自己选择的。 - Sangram Nandkhile
两者都不会起作用,因为这一切都是从 command.com 运行的。批处理文件必须通过 cmd /c 启动才能正常运行。 - fission

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文件。


%cd%无法正常工作,因为脚本是通过command.com执行的,如上面的截图所示。如果脚本是通过cmd /c执行的,那么%cd%将会起作用。 - fission
嗯,这个问题有点老了,但你可能是对的。给你的回答点赞。 - Steve

0
非常感谢这个论坛的讨论。最终我能够将所有的msi文件和可执行文件编译成一个.exe文件。
完整的步骤如下:创建一个批处理文件

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”,然后继续创建您的完整单一包。干杯!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接