Inno setup Inno安装程序在[Files]节之前执行批处理文件

Inno setup Inno安装程序在[Files]节之前执行批处理文件,inno-setup,setup-deployment,Inno Setup,Setup Deployment,当前我的批处理文件位于[运行]部分。我需要在[Files]部分之前执行批处理文件。在Inno设置中是否有这样做的方法?当前,[Run]部分始终在[Files]部分之后执行 [Run] Filename: "C:\Users\Scripts\Install\Install.bat"; Parameters: {code:GetDatabaseName} [Files] Source: "C:\Users\MyApp\*"; DestDir: "\\MyServer\MyApp"; Flags

当前我的批处理文件位于[运行]部分。我需要在[Files]部分之前执行批处理文件。在Inno设置中是否有这样做的方法?当前,[Run]部分始终在[Files]部分之后执行

[Run]
Filename: "C:\Users\Scripts\Install\Install.bat"; Parameters: {code:GetDatabaseName}  

[Files]
Source: "C:\Users\MyApp\*"; DestDir: "\\MyServer\MyApp"; Flags: recursesubdirs createallsubdirs

您可以使用
InitializeSetup
事件+一些pascal脚本


在那个例子中没有提到;要从安装程序获取文件,您可以使用
ExtractTemporaryFile('your.bat')
然后
Exec(ExpandConstant({tmp}\your.bat…
运行它。

您可以使用
InitializeSetup
事件+一些pascal脚本


在该示例中未提及;要从安装程序获取文件,您将使用
ExtractTemporaryFile('your.bat')
然后
Exec(ExpandConstant({tmp}\your.bat…
运行它。

如果需要在安装开始时执行,请在
preparetoall()
CurStepChanged>中使用
Exec()(ssInstall)
事件函数。 这些都是在用户说“继续,安装”之后,但在其他任何事情之前。
preparetoall()
还允许您取消安装,并发出一个漂亮的警告


如果需要首先从安装程序中提取文件,则可以使用
ExtractTemporaryFile()

对其进行处理。如果需要在安装程序开始时执行,请在
PrepareToInstall()
CurStepChanged(ssInstall)
事件函数中使用
Exec()
。 这些都是在用户说“继续,安装”之后,但在其他任何事情之前。
preparetoall()
还允许您取消安装,并发出一个漂亮的警告


如果需要先从设置中提取文件,则可以使用
ExtractTemporaryFile()

继续Deanna的精彩答案,代码示例:

[code]
function PrepareToInstall(var NeedsRestart: Boolean): String;
var
   ResultCode: integer;
begin
   Exec(ExpandConstant('{app}\serviceDeployment\unInstallService.bat'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode)
end;
这段代码总是返回一个空字符串,告诉安装程序继续。 如果要停止安装程序(在某些错误情况下),则需要返回一个非空字符串,该字符串将显示给用户(安装程序将停止)

要返回错误字符串,请在PrepareToInstall中添加此行:

Result := 'Your Error Description';

继续Deanna的精彩答案,代码示例:

[code]
function PrepareToInstall(var NeedsRestart: Boolean): String;
var
   ResultCode: integer;
begin
   Exec(ExpandConstant('{app}\serviceDeployment\unInstallService.bat'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode)
end;
这段代码总是返回一个空字符串,告诉安装程序继续。 如果要停止安装程序(在某些错误情况下),则需要返回一个非空字符串,该字符串将显示给用户(安装程序将停止)

要返回错误字符串,请在PrepareToInstall中添加此行:

Result := 'Your Error Description';

在安装之后我需要它,因为我需要获取用户输入值。在安装之后我需要它,因为我需要获取用户输入值。那么,当
Exec
失败时,或者当执行的目标返回错误时(在这种情况下,批处理脚本返回特定的
ERRORLEVEL
),可以公平地展示如何处理错误.Exec是布尔值。因此您可以检查它是否为真。ResultCode包含错误代码。如果不是Exec(……),则开始结果:=“您的错误描述”;endWell,则可以公平地显示当
Exec
失败或执行的目标返回错误时如何处理错误(在本例中,批处理脚本返回特定的
ERRORLEVEL
)。Exec是布尔值。因此,您可以检查它是否为真。ResultCode包含错误代码。如果不是Exec(……),则begin Result:=“您的错误描述”;end