Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何在安装所有文件后运行批处理文件(IExpress)_Batch File_Installation_Iexpress - Fatal编程技术网

Batch file 如何在安装所有文件后运行批处理文件(IExpress)

Batch file 如何在安装所有文件后运行批处理文件(IExpress),batch-file,installation,iexpress,Batch File,Installation,Iexpress,所以我有两个文件,一个是包含我所有游戏文件/文件夹的压缩文件,另一个是unzipper.bat文件,它将所有东西都放在正确的工作位置 我决定使用IExpress为我的游戏制作一个安装程序,并且有一个在安装时运行文件的选项,所以我把setup.bat放在那里,认为当所有文件都安装好后它会运行,但它没有这样做 如何使其运行setup.bat所有文件都已安装 编辑:这是我当前的SED文件 [Version] Class=IEXPRESS SEDVersion=3 [Options] PackagePu

所以我有两个文件,一个是包含我所有游戏文件/文件夹的压缩文件,另一个是unzipper.bat文件,它将所有东西都放在正确的工作位置

我决定使用IExpress为我的游戏制作一个安装程序,并且有一个在安装时运行文件的选项,所以我把setup.bat放在那里,认为当所有文件都安装好后它会运行,但它没有这样做

如何使其运行setup.bat所有文件都已安装

编辑:这是我当前的SED文件

[Version]
Class=IEXPRESS
SEDVersion=3
[Options]
PackagePurpose=InstallApp
ShowInstallProgramWindow=0
HideExtractAnimation=1
UseLongFileName=0
InsideCompressed=0
CAB_FixedSize=0
CAB_ResvCodeSigning=0
RebootMode=I
InstallPrompt=%InstallPrompt%
DisplayLicense=%DisplayLicense%
FinishMessage=%FinishMessage%
TargetName=%TargetName%
FriendlyName=%FriendlyName%
AppLaunched=%AppLaunched%
PostInstallCmd=%PostInstallCmd%
AdminQuietInstCmd=%AdminQuietInstCmd%
UserQuietInstCmd=%UserQuietInstCmd%
SourceFiles=SourceFiles
[Strings]
InstallPrompt=Are you sure you want to install Block Dodger?
DisplayLicense=
FinishMessage=Thank you for installing Block Dodger.
TargetName=C:\Users\Gebruiker\Desktop\Block Dodger (installer).EXE
FriendlyName=Block Dodger installer
AppLaunched=cmd.exe /c unzipper.bat
PostInstallCmd=%SystemRoot%\System32\cmd.exe /C unzipper.bat
AdminQuietInstCmd=
UserQuietInstCmd=
FILE0="Block_Dodger.zip"
FILE1="unzipper.bat"
[SourceFiles]
SourceFiles0=C:\Users\Gebruiker\Desktop\
[SourceFiles0]
%FILE0%=
%FILE1%=
运行安装程序时,会出现以下错误:

无法找到的批处理文件(快捷方式_creator.bat)位于压缩文件unzipper.bat中,该文件应解压缩

这是unzipper.bat的内容:

@echo off
setlocal
cd /d %~dp0
Call :UnZipFile "%~dp0" "%~dp0Block_Dodger.zip"
exit /b

:UnZipFile <ExtractTo> <newzipfile>
set vbs="%temp%\_.vbs"
if exist %vbs% del /f /q %vbs%
>%vbs%  echo Set fso = CreateObject("Scripting.FileSystemObject")
>>%vbs% echo If NOT fso.FolderExists(%1) Then
>>%vbs% echo fso.CreateFolder(%1)
>>%vbs% echo End If
>>%vbs% echo set objShell = CreateObject("Shell.Application")
>>%vbs% echo set FilesInZip=objShell.NameSpace(%2).items
>>%vbs% echo objShell.NameSpace(%1).CopyHere(FilesInZip)
>>%vbs% echo Set fso = Nothing
>>%vbs% echo Set objShell = Nothing
cscript //nologo %vbs%
if exist %vbs% del /f /q %vbs%

del /f /q "%~dp0Block_Dodger.zip"

start /d "%~dp0Block_Dodger" shortcut_creator.bat
@echo关闭
setlocal
cd/d%~dp0
调用:解压文件“%~dp0”“%~dp0Block\u Dodger.zip”
退出/b
:UnZipFile
设置vbs=“%temp%\\.vbs”
如果存在%vbs%del/f/q%vbs%
>%vbs%echo Set fso=CreateObject(“Scripting.FileSystemObject”)
>>%vbs%echo如果不是fso.FolderExists(%1),则
>>%vbs%echo fso.CreateFolder(%1)
>>%vbs%echo结束,如果
>>%vbs%echo set objShell=CreateObject(“Shell.Application”)
>>%vbs%echo set FilesInZip=objShell.NameSpace(%2)。项
>>%vbs%echo objShell.NameSpace(%1).CopyHere(FilesInZip)
>>%vbs%echo Set fso=无
>>%vbs%echo Set objShell=无
cscript//nologo%vbs%
如果存在%vbs%del/f/q%vbs%
del/f/q“%~dp0Block\u Dodger.zip”
开始/d“%~dp0Block\u Dodger”快捷方式\u creator.bat

编辑2:我刚刚选中了“在包中使用长文件名存储文件”复选框,它现在可以工作了,现在唯一剩下的是如何更改文件的结束位置?

在SED文件中,
PostInstallCmd
应设置为:

PostInstallCmd="%SystemRoot%\System32\cmd.exe /C setup.bat"

我通过选中“在包中使用长文件名存储文件”框来修复它

也可以通过转到SED文件并设置

UseLongFileName=0


我将其粘贴到SED文件中,并将setup.bat更改为我的实际文件名。但它仍然不起作用,我只是编辑了这篇文章并添加了我的SED文件。你能看一下吗?这能回答你的问题吗?它是这样的,最后生成了另一个批处理文件,在appdata中创建了一个目录,并将非临时文件移到了那里。路径是批解压缩文件的路径是“%~dp0”,这意味着路径是批脚本的路径。你是否需要一只手用解压的参数化路径重写unzipper.bat?@Zilog80否,谢谢你的提议,但我已经解决了我的问题。我创建了一个文件_mover.bat,在user/local/appdata中创建了一个文件夹,并将zip和unzipper.bat移动到那里,然后运行unzipper.bat,文件_mover.bat会自动删除。我建议您将复选框“在包中使用长文件名存储文件”作为问题的答案^^
UseLongFileName=1