背景
有个需求:自己写了一个工具,但是工具需要加载一些配置文档,甲方大哥想直接用一个exe
来完成任务,而且这个工具每次针对不同业务产生不同配置,可以说是一种一对一的工具。
开动脑筋
网上一搜索,发现windows
本来就有一个玩意可以支持exe
的二次打包加工,名字是:ILMerge
。咳咳,这玩意好像不维护了还是基于C#的东东,网上找找还是能下到安装包,但是但是但是,只支持dll
和exe
的联动,也就是说exe
调了其他的dll
库函数,可以直接用dll+exe=exe
方式,与我们这些风流需求不搭嘎。
继续搜索发现直接使用winRAR
可以在压缩的时候选择打包为自解压exe
模式。于是自己的电脑上试了一试,麻蛋,压根就没有那选项,如果你也遇到这种事情,千万不要慌,去下个高版本就好了。
方案出现
直接使用WinRAR
的脚本参数打包即可,其实也可以使用7Zip
,只是源码我看的头大的很。
来吧,网络的力量!
首先我们要去安装好了的WinRAR
拷贝一些东西到你想要打包的目录:
如上图所示:
Default.SFX
Default64.SFX
Rar.exe
WinRAR.exe
然后继续,建立一个note.txt
,主要是设置好最后用哪个exe
执行
TempMode
Silent=1
Overwrite=1
Setup=test.exe
继续写一个bat
,生成自压缩包
set softname=test巴啦啦
del .\packet\*.exe
WinRAR.exe a ./packet/%softname%.exe ./*.ini ./test.exe
Rar.exe c -znote.txt ./packet/%softname%.exe
接着建一个文件夹塞,上面都写了packet
最后点一发bat
,得到packet
下的一个自解压缩的exe
打完收工
你就可以自由玩弄一下脚本组合调用,给你老板show
一个。
更多的参数指令可以查看WinRAR
的帮助文档。
TIPS
接着又想修改一下icon
,毕竟不是自己的,先上修改的脚本
set softname=test巴啦啦
del .\packet\*.exe
WinRAR.exe a -sfx -iiconF:\soft\zippackage\smile.ico ./packet/%softname%.exe ./*.ini ./test.exe
Rar.exe c -znote.txt ./packet/%softname%.exe
没有错就是这句:
-sfx -iiconF:\soft\zippackage\smile.ico
我运行了千百次,但是都是windows
的假象迷惑了我,我翻了好多次WinRAR
帮助,结果,看图!妖怪哪里跑!!!!