在 Inno Setup 中的 [Files] 部分之前执行批处理文件

发布于 2024-11-26 08:40:52 字数 395 浏览 1 评论 0原文

目前我的批处理文件位于 [Run] 部分。我需要在 [Files] 部分之前执行批处理文件。有没有办法在 Inno Setup 中做到这一点?目前,[Run] 部分始终在 [Files] 部分之后执行。

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

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

Currently my batch file is in [Run] section. I need my batch file to execute before the [Files] section. Is there a way to do this in Inno Setup? Currently the [Run] section always execute after [Files] section.

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

携君以终年 2024-12-03 08:40:52

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

如果需要先从安装程序中提取文件,那么您可以在其前面使用 ExtractTemporaryFile()

If it needs to be done at the beginning of the setup, use Exec() in the PrepareToInstall() or CurStepChanged(ssInstall) event functions.
These are both after the user has said "go ahead, install" but before anything else.
PrepareToInstall() also allows you to cancel the install with a nice warning.

If the file needs to be extracted from the setup first, then you can preceed it with ExtractTemporaryFile()

柳若烟 2024-12-03 08:40:52

继续 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';

Continuing Deanna's great answer, code example:

[code]
function PrepareToInstall(var NeedsRestart: Boolean): String;
var
   ResultCode: integer;
begin
   Exec(ExpandConstant('{app}\serviceDeployment\unInstallService.bat'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode)
end;

this code always returns an empty string, which tells the setup to continue.
In case you want to stop setup (in some error cases) you need to return a non empty string and it will be displayed to the user (and setup will be stopped).

In order to return an error string add this line in PrepareToInstall's:

Result := 'Your Error Description';
唱一曲作罢 2024-12-03 08:40:52

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

看; 如何在使用 Inno Setup 进行设置之前运行文件

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

You can use the InitializeSetup event + some pascal scripting.

See; How to run a file before setup with Inno Setup

Not mentioned in that example; to get the file from the installer you would use ExtractTemporaryFile('your.bat') then Exec(ExpandConstant('{tmp}\your.bat ... to run it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文