当前位置: 首页 > 后端技术 > Node.js

通过InnoSetup美化安装界面

时间:2023-04-03 22:54:19 Node.js

github仓库中通过InnoSetup美化安装界面提供持续更新美化InnoSetup的相应帖子也有很多,但是代码不是很完整。..所以特地发了这篇文章来记录一下这个美化过程。废话不多说,先说最后一个结果:前端er们可以直接下载vue-nw-seed分支,一键构建就可以了。1.InnoSetup增强版这部分非常重要,是实现自定义界面的绝对前置步骤。完成这个任务也很简单,自己下载安装即可。当然,找资源的过程比较繁琐,所以我直接提供了一个,用node-innosetup-compiler包裹起来,这样就可以在Node.js下直接应用了。最终的增强版本可以在deps/innosetup中看到。请注意,InnoSetup本身是开源且免费的。希望大家在使用过程中注意作者的LICENSE。2.iss配置文件部分不用多说。对于初学者来说,这是一件复杂的事情。给个文档什么是InnoSetup?第一的。1.SetupScriptSections可以直接双击deps/innosetup/bin/Compil32.exe打开可视化配置窗口,一般过程中按照引导直接生成一个简单的安装配置,会生成一个类似setup-simple的.iss配置文件。当然,对于这种简单的配置来说,一个扁平漂亮的界面肯定是不够的。..所以,看我提供的一个setup.iss,里面有完整的流程控制和接口控制。这里代码太长,加了455行注释,这里就不贴了,直接点链接看。2.455行代码中的PascalScript主要是[code]块下的PascalScript,通过它来控制安装过程和美化界面。控制安装过程的原理是InnoSetup通过PascalScripting:E??ventFunctions的事件机制将进程节点的控制权交给PascalScript,使其可以控制上一步、下一步等操作.界面美化主要是调用两个美化插件动态库:botva2.dll和InnoCallback.dll。用它来控制贴图的位置和样式,给按钮绑定相应的事件等。详细的控制方法请参考setup.iss文件中的注释,这里不再详细说明。..那太多了,无法解释。3.设置资源部分用于存放贴图资源和美化插件动态库。我默认放在示例项目的/build/setup_resources中。如果你看过上面的setup.iss文件,你会发现里面资源文件路径的配置是类似这样的"_resourcesPath_\*"这个是因为每个项目需要的打包配置和路径可能不一致,做了特殊处理,见build-win-setup.js//重写名称,版本为issfs.readFile(issPath,null,function(err,text){if(err)returnreject(err)letstr=iconv.decode(text,'gbk').replace(/_name_/g,name).replace(/_appName_/g,appName复制代码).replace(/_version_/g,version).replace(/_outputPath_/g,outputPath).replace(/_outputFileName_/g,getOutputName(outputFileName,{name,version,platform})).replace(/_filesPath_/g,文件).replace(/_resourcesPath_/g,resourcesPath).replace(/_appPublisher_/g,appPublisher).replace(/_appURL_/g,appURL).replace(/_appId_/g,appId)fs.writeFile(tmpIssPath,iconv.encode(str,'gbk'),null,function(err){if(err)returnreject(err)//innosetup开始innosetupCompiler(tmpIssPath,{gui:false,verbose:true},function(err){fs.unlinkSync(tmpIssPath)if(err)returnreject(err)resolve(opt)})})})如果你只是想简单地使用InnoSetup打包安装,界面美观,直接更改对应的配置路径即可。3.Q&A需要说一下几个坑。..1.iss文件是否需要特定的编码格式?中文需要ansi编码,否则界面上打包的中文会乱码!这就是为什么我直接使用文本纹理而不是标签来保证界面中文本显示的万无一失。2、这个InnoSetup增强版和普通版有什么区别?老实说,我不是很明白。InnoSetup本身是开源免费的,您可以自行修改编译。我现在用的版本应该是一个增强版,和国内某位前辈收集的一些脚本之类的东西分开打包的。3、为什么不单独创建一个InnoSetup美化工程?一方面我不确定InnoSetupEnhancedEdition的版权协议,另一方面我也不确定你的需求。我们暂时可以通过源码+详细注释的方式来学习这部分技巧。如果确实这部分需求很强,请私信我,或者发个issue讨论如何调整这个项目。4.参考资料互联网软件安装包界面设计-InnosetupINNOSETUP仿有道云安装包界面Pascal入门InnoSetup文档:EventFunctions