installation - Inno Setup - 运行脚本在第一次尝试新机器时不起作用
问题描述
我使用Inno Setup Compiler 6.0.2创建了一个简单的可执行 (.exe) 文件,用于安装 Windows 应用程序。
.exe 文件调用解压缩“Application.zip”文件并更新环境变量的 vbscript “Setup.vbs”。
当我在新机器上第一次运行 .exe 文件时,.vbs 文件没有被执行。但是,从第二次尝试开始,它工作正常。这是一个已知问题还是有任何解决方案?
这是我用来调用运行 .vbs 文件的代码片段
[Code]
function PrepareToInstall(var NeedsRestart: Boolean): String;
var ResultCode: integer;
begin
ShellExec('',ExpandConstant('{app}\{#MyAppExeName}'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode)
end;
更新
我希望 .vbs 在安装之前执行。所以,我试过ExtractTemporaryFile
了,我仍然面临同样的问题。不确定下面的代码有什么问题。
#define MyAppExeName "Setup.vbs"
[Files]
Source: "..\Application\Installation_Setup\Setup.vbs"; DestDir: "{app}"; Flags: ignoreversion
[Code]
function PrepareToInstall(var NeedsRestart: Boolean): String;
var
ResultCode: integer;
begin
ExtractTemporaryFile('{#MyAppExeName}');
ShellExec('',ExpandConstant('{app}\{#MyAppExeName}'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode)
end;
解决方案
PrepareToInstall
发生在安装之前。当您执行一个已安装的文件时,它在您调用它时还不存在。
可能的解决方案
安装后执行脚本
CurStepChanged(ssPostInstall)
:安装
所有文件后运行的代码或者您可以使用
[Run]
部分:
在 Inno Setup 中执行安装的批处理文件如果您需要在安装前执行脚本(我不认为这是您的情况),请使用
ExtractTemporaryFile
.要提取 ZIP,您不需要 VBS 脚本,您可以直接从 Inno Setup 代码中执行此操作。
如何让 Inno Setup 解压缩它安装的文件(全部作为一个安装过程的一部分)
推荐阅读
- vtk - 如何使用 VTK 体素索引获取世界坐标?
- javascript - jsconfig.json 允许在 React 中进行绝对导入,但会破坏 Styleguidist 导入
- python - python中的文件搜索
- flutter - 如何解决未处理的异常:FormatException:在 Flutter 中下载文件时找不到中央目录记录的结尾?
- arrays - 无法解码来自 AWS 的网络响应
- html - Aria 标签和 Alt 属性
- python - 绘制由缺失值组成的数据集的平均线性回归
- apache-kafka - 如何使用具有特定分区器的 Apache Flink 将数据作为键/值发送到 Kafka
- python - 根据分隔符吐出一列
- reactjs - npm 运行版本 2.15.12 而不是 windows 中的最新版本 6