- 安装inno setup安装包,
2、安装后设置以管理员权限运行此程序,修改环境变量需要管理员身份运行此程序
- 将需要分离出来的动态库文件单独放在一个文件夹中
- 启动inno setup软件,选择创建新的脚本文件,下一步
- 不创建空的文件,下一步
- 填写相关安装包的信息,下一步
- 选择默认选项,下一步
- 因为是动态库包,没有主执行程序.exe,勾选此选项
- 选择刚刚分离好的需要打包的目录,作为打包的目录,下一步
- 默认选项,下一步
- 许可证文件,默认不填,下一步
- 默认选项,为电脑上所有用户安装,不填,下一步
- Windows注册表文件,无,默认不填,下一步
- 软件安装向导语言,选择Chinese中文语言,需要在程序运行目录的Language文件夹中加入Chinese.isl文件,下一步
- 安装包输出的目录,可以设置安装包的图标icon以及名称,下一步
- 不使用预编译指令,不勾选,下一步,完成设置
- 可以保存脚本文件,用于添加后续的添加注册表代码
- Inno setup软件生成的脚本文件
- 在脚本结尾添加此段代码,用于将此安装包的安装路径加入到系统用户变量中
[Run]
Filename: "{app}"; Description: "Running My Program"; Flags: postinstall skipifsilent runascurrentuser
[Code]
function InitializeSetup(): Boolean;
begin
Result := True;
end;
procedure AddPathToEnvironmentVariable(const PathToAdd: string);
var
CurrentPath, KeyPath: string;
RootKey: integer;
begin
// 选择是添加到系统环境变量还是用户环境变量
// 对于用户环境变量,使用:
RootKey := HKCU; // 或者 HKLM 如果你想添加到系统环境变量 (需要管理员权限)
KeyPath := 'Environment'; // 用户环境变量
// 对于系统环境变量,使用:
// RootKey := HKLM;
// KeyPath := 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment';
// 获取当前的 PATH 环境变量值
if not RegQueryStringValue(RootKey, KeyPath, 'Path', CurrentPath) then
CurrentPath := '';
// 检查是否已经存在该路径,避免重复添加
if Pos(PathToAdd, CurrentPath) = 0 then begin
// 如果不存在,则添加新路径
CurrentPath := CurrentPath + ';' + PathToAdd;
// 更新注册表中的 PATH 环境变量
RegWriteStringValue(RootKey, KeyPath, 'Path', CurrentPath);
// 发送 WM_SETTINGCHANGE 消息通知系统环境变量已更改
{PostMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer('Environment'));}
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
var
ErrorCode: Integer;
begin
if CurStep = ssPostInstall then (*这也是注释*) {这是注释}
begin
{
这是注释
}
(***)
// 等待之前 [Run] 段中的程序完成
// 注意:因为我们在 [Run] 段中设置了 nowait 标志,所以我们需要在这里手动等待程序结束。
// 如果你希望脚本等待程序完成后再继续,可以移除 nowait 标志或使用其他方法等待进程结束。
// 假设我们有一个函数 WaitForProgramToFinish 来等待程序完成(需要你自己实现)
// WaitForProgramToFinish('{app}\MyProg.exe', ErrorCode);
// 程序结束后添加路径到环境变量
AddPathToEnvironmentVariable(ExpandConstant('{app}'));
end;
end;
20、点击inno setup软件中的执行按钮,在输出目录生成安装包文件.exe
21、点击运行,运行完毕后,将安装包中库解压到相应设置好的文件夹,并将对应的路径加入到用户环境变量中