一个多月不写博客了,不造大家有没有想我,(别自恋了,寥寥无几的粉丝,谁会想你),呜呜~~~

好了,废话少叙,借用郭德纲老板的话,天儿不早了,干点正事儿吧!

一、序

Unity开发者都知道,打包出来的exe,是那种免安装的应用程序,直接双击就能运行,这样虽然简单但是不利于我们向别人发布程序,

而且看起来很不正规。制作安装程序的方式有很多,例如 inno , installshield,甚至rar压缩程序都能制作安装程序,关于inno和rar制作

安装程序的方法请参考我的上一篇博客https://www.cnblogs.com/Jason-c/p/9872029.html ,inno自带的模板比较简单,容易上手,

但是实现比较复杂的功能的时候就得写代码了,比如:需要给安装程序中添加依赖环境的时候,可以写代码添加依赖。但是,人都是有惰性的,

虽然我也是程序员,但是用一种从未接触过的语言,编写程序,心里还是很抵触的。所以就转而使用 installshield 了,installshield 包含有好多模板,

基本上好多参数都可以可视化的调整,而不需编写代码。但是这并不是说,installshield 什么时候都不需要用脚本控制了。而且 installshield 虽然

是可视化的参数,但是并不耽误它依然存在很多的坑。这篇文章并不是一个详细到如何建立工程都要啰里啰嗦一大堆的教程,但确实是笔者一步

一个坑踩过来的经验之谈,目的是让读者能在制作安装程序“走投无路甚至怀疑人生的时候”,能够豁然开朗,发现柳暗花明又一村的世外桃源。

二、通过 installshield 构建安装程序所遇到的问题

2.1、选择模板

网上很多教程都是推荐选择 InstallSScript MSI Project ,说什么这个可以写代码控制,但是笔者并不认为这个模板有什么优势,因为笔者本身

就是为了避免写代码,才从inno转为使用installshield的,当然什么都不是绝对的,适合自己的才是最好的。

这里笔者还是建议选择 Basic MSI Project,因为Basic MSI Project可以方便的隐藏那些你不想要的窗口:

在InstallSScript MSI Project模板中是没有 Installation Inteview 这个页面的,为了去掉安装过程中那些不想要的页面,

可能需要花费很大的力气。

如:想去掉客户信息这个页面,

在Basic MSI Project模板中只需将Installation Inteview 页面中的 Do you want to prompt users to enter their company name and user name?

设置为No 就能轻松隐藏。

2.2、添加外部依赖环境

有时候我们的程序可能会依赖一下底层的运行库,如 VC++ Runtime , .net 等,可以通过installshield添加,同样是不需要写代码的(正是

为了添加外部依赖环境,又不想写代码,笔者才从inno转到installshield的)

打开installation designer 选择Application data下的Redistributes,就可以尽情的添加依赖了。

需要注意的两点是:

1、勾选依赖环境后,会自动从网上下载,而且下载可能需要FQ。

2、直接勾选上以后,打包发布setup.exe后,~\PROJECT_ASSISTANT\SINGLE_EXE_IMAGE\DiskImages\DISK1 目录下

的ISSetupPrerequisites文件夹存放的就是依赖环境,双击setup.exe 如果ISSetupPrerequisites文件夹不存在,就不从网上下载,

如果存在就直接安装依赖环境了。

这样的弊端也是很明显的,在ISSetupPrerequisites文件夹丢失并且又没网的时候,setup.exe就废掉了,那么有没有一种办法

将ISSetupPrerequisites文件夹内的依赖文件直接打包进setup.exe 呢,当然是有办法的,

选择依赖环境,右键点击属性,将Build Location 设置为Extract From Setup.exe, 点击应用,就可以了。

这的就可以了吗?哈哈,当然不,你试过就知道,似乎并不好使。

接着再按下图红框圈住的地方设置为Extract From Setup.exe(原谅笔者懒得打字了),好使,试过才知道!

当然,设置了Extract From Setup.exe后是不能够发布MSI的,只能发布exe

2.3、构建的setup.exe 去掉页面中的InstallShield字样

搞个安装页面,结果出现各种InstallShield的logo,真的让人很烦,不过当然是有办法去掉的。

简答暴力的方法就行在 String Editor 中将所有的Installshield字样都删掉。

当然这个是个体力活儿,不过这个方法很好用呀。同理,你可以将其修改为任何你想要的字词句段篇章。

而后,打开setup.exe,就能在setup页面中看到你自己设置的词了。

2.3、setup.exe 安装完后疯狂的弹出错误1905

安装的时候疯狂的弹出错误1905,无法注册模块。。。

卸载的时候疯狂的弹出错误1905,无法撤销注册模块。。。

这是因为你在添加文件夹时,选择了Self-register all files,

解决方法就是重新导入需要的文件夹,不勾选Self-register all files。

2.4 修改页面布局

修改安装程序的背景图片,修改显示的文件等都可以在Dialogs中修改,其中All Dialogs就是安装程序显示的所有页面,通过修改Behavior和Behavior下面的Dialog的参数完成修改的目的。

2.5 打包的时候报错 ISDEV : fatal error 0:

这种error特别坑,没有任何有效的提示,可能的原因是需要压缩的文件或文件夹太大了。

制作PC端的安装程序的更多相关文章

  1. C语言PIC16 serial bootloader和C#语言bootloader PC端串口通信程序

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 新PIC16 Boot ...

  2. 推荐常用的移动端、PC端、小程序的UI框架

    1.移动端UI库 ①.Vant UI 官方地址:https://youzan.github.io/vant/#/zh-CN/intro github地址:https://github.com/youz ...

  3. C语言PIC32 serial bootloader和C#语言bootloader PC端串口通信程序

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 今天介绍下我新完成的为 ...

  4. C语言dsPIC / PIC24 serial bootloader和C#语言bootloader PC端串口通信程序

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 新dsPIC/PIC2 ...

  5. C语言PIC18 serial bootloader和C#语言bootloader PC端串口通信程序

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 新PIC18 Boot ...

  6. C语言RL78 serial bootloader和C#语言bootloader PC端串口通信程序

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 前段时间完成的hype ...

  7. C语言RH850 F1L serial bootloader和C#语言bootloader PC端串口通信程序

                   了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程 ...

  8. C语言RH850 F1KM serial bootloader和C#语言bootloader PC端串口通信程序

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 今天我要介绍的RH85 ...

  9. 制作Windows服务和安装程序(C#版)

    http://blog.sina.com.cn/s/blog_5f4ffa170100vt2b.html 1.创建服务项目: 打开VS 2005 编程环境,在C#中新建Windows服务程序 2.将安 ...

随机推荐

  1. 百度图标echarts.js的使用

    echarts官网:http://echarts.baidu.com/api.html#echarts echarts是百度公司开的一种开源制作图片工具,是一个专门制作图表的开源工具,功能非常强大,地 ...

  2. LCA题集

    点的距离(模板题) 树中两点间的距离就是d[u] + d[v] - 2 * d[lca(u, v)] #include<bits/stdc++.h> #define REP(i, a, b ...

  3. git与github的连接流程

    https://blog.csdn.net/sssssuuuuu666/article/details/78565381 https://www.cnblogs.com/wzd5230/p/49064 ...

  4. 洛谷—— P3225 [HNOI2012]矿场搭建

    https://www.luogu.org/problem/show?pid=3225 题目描述 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有 ...

  5. test文件夹,测试类是放在src目录下的,test测试代码是代码啊,当然要放在代码文件夹下

    test文件夹,测试类是放在src目录下的,test测试代码是代码啊,当然要放在代码文件夹下 Maven的标准工程结构 Maven的标准工程结构如下: |-- pom.xml(maven的核心配置文件 ...

  6. 排序(3)---------冒泡排序(C语言实现)

    说到冒泡排序,大一的时候第一次学习这个排序算法,可能大家不知道,"冒泡"在我说的方言里面是吹牛逼的意思. 所以就认为这个排序算法特吹牛逼有木有. 相信大家对全部的排序算法,这个想必 ...

  7. 输入password登录到主界面,录入学生编号,排序后输出

    n 题目:输入password登录到主界面,录入学生编号,排序后输出 n 1.  语言和环境 A.实现语言 C语言 B.环境要求 VC++ 6.0 n 2.  要求 请编写一个C语言程序.将若干学生编 ...

  8. [windows+cocos2dx]CCSprite精灵类

    序言 回想cocos2dx,之前在mac+Xcode平台学习了一遍cocos2dx,一年时间不接触cocos了.一直在搞Unity3d.如今还是就之前所学温故温故,但不再用Xcode来写.用经常使用的 ...

  9. node 内存消息队列

    var net = require('net') var clients = [] ,msgs = {} function unWrapMsg(data){ data = data.toString( ...

  10. Opencv Mat矩阵中data、size、depth、elemSize、step等属性的理解

    data: uchar类型的指针,指向Mat数据矩阵的首地址.可以理解为标示一个房屋的门牌号: dims: Mat矩阵的维度,若Mat是一个二维矩阵,则dims=2,三维则dims=3,大多数情况下处 ...