首页 > 代码库 > 给程序加外壳

给程序加外壳

这两天有这么一个任务:写一个 给指定的EXE加一个外壳 的程序,

该外壳需要做如下工作:

1. 判断当前时间是否晚于核查时间,如果早于核查时间,运行原指定EXE

2. 若晚于核查时间,且没有新程序,从设定网址下载新程序

3. 若晚于核查时间,且有新程序,直接运行新程序

 

而改程序,需要能够设定原EXE路径,设定下载程序网址,设定核查时间

 

最初的解决方案是如此: 将外壳需要做的工作写成一个命令行程序,几个关键变量用占位字符代替。保存在txt中。运行程序时根据用户输入,动态替换txt中占位符之后进行动态编译。然后将生成的命令行与EXE一同用winrar打包。打包操作用命令行执行,并且采用解压到临时文件,且设定覆盖模式为不覆盖新文件。

一番折腾之后。客户要求不使用SFX.

在客户的提点之下,意识到了可以用vs的命令行编译。

遂调整为如下方案:

新建一个命令行的项目,将改项目至于打包程序debug目录下,根据打包程序输入动态调整改命令行代码,并且将指定原EXE作为嵌入的资源加载到命令行程序中。而改命令行程序中需要完成将嵌入的资源释放到本地临时文件夹中。(最初是在命令行中直接调用,这样的问题是针对不同程序可能没有办法直接执行,并且无法将下载的程序嵌入打包好的程序里)

给程序加外壳