C# 为iexpress创建批处理文件

C# 为iexpress创建批处理文件,c#,installation,exe,silent,iexpress,C#,Installation,Exe,Silent,Iexpress,我正在尝试使用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

我正在尝试使用
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
MKDIR%Tmp%\
XCOPY.%Tmp%\/S/E/Y
%Tmp%\\setup.exe

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

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

以下是它的含义:

1)
%TMP%
环境变量中存储的路径中创建一个名为“唯一产品名”的目录(
MKDIR
),该目录通常指向:C:\DOCUME~1\yourusername\LOCALS~1\Temp

MKDIR %Tmp%\<UNIQUE PRODUCT NAME>
3)最后从新位置执行应用程序 %Tmp%\\setup.exe


希望这有帮助

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

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

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

cmd.exe /c file.bat
所以它使用了一个现代的命令解释器


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

非常感谢本论坛的讨论。最后,我可以将所有msi文件和可执行文件编译成一个.exe文件

按照以下步骤完成创建批处理文件的过程

echo on

设置CURDIR=%CD%

msiexec.exe/i“%CURDIR%\1.msi”

“%CURDIR%\3.EXE”

“%CURDIR%\setup.exe”

echo off

您可以根据需要排列任意数量的exe文件或msi文件,并将批处理文件另存为yourfile.bat。 现在,棘手的部分是在继续使用Iexpress之前,使用提供的软件将批处理文件转换为exe

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


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

谢谢你的解释。但是我没有帮我解决d问题。你最新的脚本是什么样子的?您是否仍然收到问题中显示的相同错误消息?我认为这是因为您正在从APPDATA temp目录运行它。你能把批处理脚本和exe移到别的地方试试吗?我控制不了。临时目录由iexpress工具本身选择。两者都不起作用,因为这都是从
command.com
运行的。批处理文件必须通过
cmd/c
启动才能正常工作。
%cd%
无法工作,因为脚本是通过
command.com
执行的,如上面的屏幕截图所示。如果脚本是通过
cmd/c
执行的,那么
%cd%
就可以工作了。这是一个很老的方法,但可能你是对的+1.你的答案
cmd.exe /c file.bat