v5.33Realease总结-折腾是风险与惊喜并存

来源:互联网 发布:能在淘宝买燕尾型材吗 编辑:程序博客网 时间:2024/05/16 09:08

【需求】

    即将迎来2017的除夕夜,公司刚发布的是一个小的版本,在这个版本中我的工作是:用InstallShield制作新的安装包。    为什么变更重新制作安装包的方式?是之前用XX插件(没去了解)做的安装包经常会被杀毒软件报病毒。

【初尝InstallShield】

原来也玩的做过安装包,用vs自带的工具去制作,在vs2013下,已经没有提供部署工具了,不过可以下载安装,一样的用。

这里写图片描述

既然需求已经指明是IS(InstallShield)来制作,那就去看看。早在上一个版本中,因为个人对这个感兴趣,使用InstallShield2013LimitedEdition,这是一个轻巧的嵌入vs使用的版本,因为可以免费试用,是“可视化界面”引导的方式,Next/Next以及网上初级的资料较多,还是很容易做出一个demo。在这个版本中,想用之前自己做的demo,发现工程无法使用,试用期到了,注册一下可以永久使用,那就去注册吧。注册界面中的“国籍”一项是ComboBox,没有数据,需要翻墙……翻墙后发现给的序列号没有作用……有破解工具/方法,没用……网上说可以打电话给中国区的客服解决,告知已经对该版本已经不在维护……给官方发邮件,来回两三封,还是推荐使用最新版本……

这里写图片描述让我感慨一下这里,因为已有的demo,内心排斥新的版本,所以在怎么干掉试用期,花费了一段时间去……


【使用IS时遇到的事一:第三方软件打包】

 如何将.NET Framework或者其他更多的第三方打包到安装包中,如果目标机器没有,自动安装,且安装的版本与电脑位数一样?这是一个系列问题。 1.在IS中,提供了一大部分可供打包的第三方文件列表,以.prq文件的方式提供,在列表中勾选下载,便下载到你的本地IS路径SetupPrerequisites文件夹中。(.prq是个xml一样,里面记录了下载的地址路径等信息)2.如果你需要的第三方软件不在此列表中,寻找该软件的.prq文件,放在SetupPrerequisites文件夹中,刷新IS的该列表即可。3.在列表中勾选,且每个右键/属性都设置为从安装包中提取使用。4.在生成安装包的时候,也设置为从安装包中提取软件。这里就体现了IS的强大,安装包运行时,目标机器如果没有你勾选打包进去的第三方软件,会自动安装。且如果是x86的电脑,会安装x86的第三方软件,否则安装x64第三方软件,前提是该第三方软件的x86和x64版本都打包进去了。

【使用IS时遇到的事二:安装界面】

这里写图片描述 当我看到IS的logo,用IS做出一个安装包时,我才明白小时候玩的游戏和一些软件的安装包是用IS做的。

IS制作的安装包界面可以选择需要的Dialogs,也提供了一些theme,但是主体布局结构逃不开左右双栏结构。我替换素材,修改文字后,界面是美观了一点,但是还是无法忍受这种布局,且最不能让我忍受的是,每一个界面中有“InstallShield”的字样无法去掉。理解,但不愿意接受。

工期还有一段时间,我问Frank

这里写图片描述 Frank,为什么要用IS来做安装包,丑爆了。
这里写图片描述因为强大,可以满足我们的需求。
这里写图片描述我们的需求很简单。
这里写图片描述如果可以满足我们的需求,当然是越漂亮越好了。


【我对打包的理解】

当我用IS做出一个可以用于发布的安装包时,对打包有了一个系统的理解。打包就是将vs下realease模式运行的文件加密后迁移至目标机器,且正常运行,在署个名。

这里写图片描述 填写基本信息

     a.软件名称     b.公司名称     c.软件版本号     d.安装包、应用程序和卸载程序的icon

这里写图片描述软件文件

     程序集、config、数据库……

这里写图片描述部署软件运行环境

     .NET Framework、数据库

这里写图片描述其他(Core)

      软件安装默认的路径      软件安装目录的结构      安装时候美丽的界面      创建桌面与任务栏的快捷方式      软件是否可以重复安装      软件是否可以在运行的时候卸载      软件卸载的是否干净      软件需要的第三方软件是怎么安装给用户      ……前三步是必须的,总结为:某人的某物在各种环境下可以正常运行。

这里写图片描述第四步并不是必须的,但是软件与软件的安装包用户体验就差距在了这里。


【尝试Inno Setup】

这里写图片描述在网上查找,别人的安装包是怎么做的?惊讶的发现,360、腾讯管家、PPTV等很多软件的安装界面风格很相似,尤其是有道云笔记、网易云音乐和QQ音乐,是一个有颜色的矩形,上面写点字,下面有简单的选项,安装过程是轮播图片。

这里写图片描述 Inno Setup也支持可视化的界面制作,制作步骤比IS简单多了,但相对功能也简单多了。采取脚本的方式制作,找到了一个成熟软件的安装包,本着”有轮子就不造轮子”的思想,尝试改改。支持pascal语言,用C#的底子尝试去改,变量名放前面,类型放后面,Boolean和vb一样,写方法签名是function和js一样(能看到“语言是共通的”影子,也让我坚定,要把C#精通才是目标。)

这里写图片描述两天的时间,居然真的该成功了。我在里面加入了一些自己需要的功能,核心是:

 - 打包.NET Framework,如果目标机器没有,运行安装包中.NET Framework的安装包。 - 打包SqlCe,如果目标机器没有,是x86运行安装包中x86版本SqlCe安装包,是x64运行安装包中x64版本SqlCe安装包。 - 打包VC++,如果目标机器没有,运行安装包中的VC++安装包。

这里写图片描述由此感慨为什么程序猿喜欢开源。因为开源,资料多一点,因为开源,可以自己定义。IS固然强大,但也是在故步自封。
还有一点:自己做的东西,一定要自己看得过去才行。


【使用Inno Setup遇到的事】

在打包VC++组件的时候,我也想让它像我打包的.NET Framework一样,检测目标机器没有,运行VC++的安装包,但是发现VC++不同于.NET Framework和数据库,在XP SP2、XP SP3、Win7中注册表的GUID各不相同,没有办法根据注册表判断。那不管用户有没有,都去尝试去安装,这总不会有大问题…,但带来的负面效果就是,用户有了,还会弹出VC++的Windows Installer的界面,显示要修复还是卸载,多一个没有用的界面,总是让人不爽。有一种叫"静默安装"的方式,即不会显示安装过程,有就不安装了,没有就【偷偷的】给用户安装。但是VC++2012_x86版本给xp的目标机器上静默安装后,会自动重启目标机器,这就更让我恼火了,换成vc++2010的不会重启,但是10不足以支持我们的需求。直接将vc++的dll放到主程序文件夹中,当做软件的一部分,也不去单独安装,以这样的方式解决。

这里写图片描述”静默安装”,哦,原来安装完一些软件,会推荐安装一些软件,有良心的呢,推荐安装的软件前面有个勾选,流氓的呢,在你不知情下就偷偷在安装了,连托盘的提示都没有。在这个版本中我还知道了有“静默升级”这个词,既有新版本发布,用户登录旧的版本会自动升级。


【尾声】
当我内心觉得骄傲时候,遇到了冷水,在这里总结,和诸位共勉:

3. 打包了6个无用的文件,xml、pak、ico

    xml文件一般是代码注释的文件,像数据库、ORM等都会有,不用打包进去。    ico制作安装包的时候选好就可以了,没有必要放在安装包里面中。

这里写图片描述 安装过程中操作/提示增多

    目标机器没有安装.NET Framework,会先弹出一个仅含有"确定"的mbx提示:我们将引导您……    目标机器没有安装数据库,会先弹出一个仅含有"确定"的mbx提示:我们将引导您安装……

4. 第三方软件安装与主程序安装相对独立

    之前的版本是用压缩包制作的安装包,检测到目标机器没有.NET Framework和数据库后,分别点同意协议和确定,然后.NET Framework、数据库和主程序三个软件会共享一个进度条进行安装。    现在的版本是检测到目标机器没有.NET Framework,提示引导安装后,提取安装包中打包进去的.NET Framework安装包运行,是原生的安装过程。    安装成功后,紧接着自动检测目标机器是否有数据库,当目标机器中没有数据库,提示引导安装后,提取安装包中打包进去的数据库安装包运行,是原生的安装过程。    安装成功后,紧接着安装主程序软件。

这里写图片描述虽然是运行的一个安装包,但过程中展现的是三个独立的安装过程,三个进度条,会给用户造成一种错觉:我安装你的软件,你给我安装了些什么乱七八糟的。

这里写图片描述 卸载不干净

软件使用过程中产生的一些文件在软件卸载的时候没有删掉。

5. 可以覆盖安装

软件已经安装好,可以直接再次安装覆盖,没有像Windows Installer一样,有一个修复/卸载的界面。

这里写图片描述 可以在运行时卸载

会删掉一大部分文件,但是运行时用到的一些文件存留。

这里写图片描述 默认安装在D盘更好

如果检测目标机器有D盘,将软件安装在D盘,即使用户重装系统也没事。

这里写图片描述 当双屏的用户运行安装包,出现两个安装首页,其中一个还带有Windows边框

...

但还是有做的好的地方

这里写图片描述 安装过程漂亮多了

这里写图片描述 安装目录/任务栏的文件夹是中文名称

这里写图片描述感悟:没有一个功能是一个版本造就十全十美的。

0 0
原创粉丝点击