• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2022-07-11 15:51 Aet 隐藏边栏 |   抢沙发  144 
文章评分 6 次,平均分 5.0

准备

  1. 安装7z后,在官网下载LZMA SDK,然后下面几个文件拷贝到7z安装目录
    1. LZMA SDK
    2. 7zS2.sfx
    3. 7zS2con.sfx
    4. 7zSD.sfx

压缩目标文件

  1. 准备好要打包的目标文件,放到一个文件夹

    1. 把独立的UI程序放到这里,并改名为setup.exe
  2. 7z安装目录下执行命令,把该文件夹里面的内容压缩成一个7z压缩包

  1. 成功生成aet.7z后,准备一个配置文件,如下

配置文件

  1. config.txt

参数

关于解压路径

  1. 发现上面配置的InstallPath是不生效的。
  2. 所以在setup.exe里面去获取当前文件夹路径。

关于InstallPath

  1. 时隔三年多,重新遇到了这个问题
  2. 虽然网上教程中经常可以看到这个配置,但是经实践发现从7z官网下载的sdk确实对这个InstallPath没反应
    1. 尝试了以下版本都不行:
    2. lzma2500
    3. lzma2301
    4. lzma2107
    5. lzma1900
    6. lzma1604
    7. lzma920
  3. 解决:
    1. 从这个仓库OlegScherbakov下载了增强版本7zsd_extra_170_3900.7z
    2. 使用了7zsd_All.sfx,可以识别到InstallPath

配置文件二

概述

  1. 下午操作基于增强版7zsd_extra_170_3900.7z

静默启动

命令行传参

  1. 方法一
    1. 命令行直接传参,EasyRe可以收到

  1. 方法二
    1. 中转一层,launcher.bat位于Easy目录下

build

生成安装包

  1. 执行下述命令

  1. 这样,就会生成一个installer.exe,双击运行,会启动launcher.exe,启动参数也是在配置文件里面指定了。

脚本

  1. 把压缩和生成exe

setup.exe

  1. 这个exe是用来给用户操作的一个UI,点了快速安装后,主要做了以下几件事情:
    1. 计算相关文件的md5
    2. 从解压路径把所有文件拷贝到用户选择的目标路径下
    3. 用之前算好的md5,拼一个启动参数,去调起相关进程

判断路径

判断进程是否运行

杀进程

启动进程

  1. 启动进程的同时,创建事件和线程
  2. 线程用于监控启动的进程有没有结束,结束就设置事件有信号

  1. 在后面等待事件的触发

rapidjson读取json文件

删文件

  1. start.json普通删除
  2. setup.exe由于走到这里时它正在运行,重启删除

copy

替换ICON

方法一

  1. resource hacker
  2. 使用resource hacker直接把以下二进制文件的icon替换成想要的icon
    1. 7zS2.sfx
    2. 7zS2con.sfx
    3. 7zSD.sfx

方法二

  1. resource hacker
  2. 使用resource hacker7z打包出来的exe替换icon

声明:本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2026-01-20
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享