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