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

Posted

技术标签:

【中文标题】安装所有文件后如何运行批处理文件(IExpress)【英文标题】:how to run batch file after installing all files (IExpress) 【发布时间】:2021-03-29 07:42:30 【问题描述】:

所以我有 2 个文件,一个包含用于游戏的所有文件/文件夹的压缩文件和一个 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%=

当我运行安装程序时,它会出现以下错误:

找不到的批处理文件(shortcut_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

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

【问题讨论】:

这能回答你的问题吗? How can a .bat file be 'converted' to .exe without third party tools? 确实如此,最终制作了另一个批处理文件,该批处理文件在 appdata end 中创建了一个目录,将非临时文件移到了那里。 我猜你在“编辑 2”。批处理解压缩文件的路径是"%~dp0",这意味着批处理脚本的路径。您是否需要使用参数化路径来重写 unzipper.bat 以进行解压缩? @Zilog80 不,感谢您的提议,但我已经解决了我的问题。我创建了一个 file_mover.bat 在 user/local/appdata 中创建一个文件夹并将 zip 和 unzipper.bat 移动到那里,然后我运行 unzipper.bat 并且 file_mover.bat 会自行删除。 我建议您发布选中“使用包内的长文件名存储文件”框作为您问题的答案^^ 【参考方案1】:

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

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

【讨论】:

我将它粘贴到 SED 文件中,并将 setup.bat 更改为我的实际文件名。但它仍然不起作用,我只是编辑了帖子并添加了我的 SED 文件。你能看看吗?【参考方案2】:

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

您也可以通过转到 SED 文件并设置来完成此操作

UseLongFileName=0

UseLongFileName=1

【讨论】:

以上是关于安装所有文件后如何运行批处理文件(IExpress)的主要内容,如果未能解决你的问题,请参考以下文章

iexpress 提取文件,然后从 exe 中运行 vbs 引用文件

我如何从 Github 安装文件

IJpress Post Installation Batch与NodeJS没有立即找到NPM

无法将参数发送到通过 IExpress 转换为应用程序的批处理文件

iexpress 在扩展到 temp 时不维护文件夹结构 [重复]

IExpress 2 和 bat 文件路径