Installshield 总结系列之Basic MSI
2012-10-04 14:28
232 查看
为什么要写写篇博客呢? 目的就是方便自己日后复习的时候,自己的总结以后可以看一下,同时对于别人也是一个参考,帮助那些刚入门的人。
1. 什么是Basic MSI Project
Basic MSI project就是制作基于Windows Installer Engine的安装Installshield包(Installshield提供有限的支持,如Prevent Downgrade等),即我们常见的MSI格式的安装文件(也可以是以EXE形式的安装文件),只支持一些基本的命令和Windows的API,一句话,只能使用Windows Installer Engine支持的命令和API。
2: Multi Release, Multi Instance
什么情况下会需要Multi Release呢?
一个产品,它有多种安装版本,如如权限的不同,就好象试用版,正式版,专业版之类的。但安装的主体逻辑是一样的,可以把它们放在同一个MSI Project里面。
什么情况系需要Multi Instance
一个产品A是另外多个产品的一部分,为了独立维护(安装、卸载、神经)产品A,所以,需要独立的Product Code, Upgrade Code。即需要Multi Instance.
2.2如何定制不同的Release, Instance
打包过程的定制:这个可以借助于Release Flag, 每个Release可以定义支持的Release Flag, 同时在Componet那边标上对应的Flag.
安装过程的定制:可以在component的condition里面设置对应的条件,只有在满足条件的情况下,这个component才会被安装。
脚本执行的定制:在Release里面有一个Predefine Processor的选项,定义一个条件编译护符,在脚本里面写 #ifdef …#endif
3.Upgrade
对应Basic MSI, upgrade 分为major upgrade, minor upgrade.
什么情况下会发生minor upgrade,版本的上涨,package code的变化都会导致minor upgrade.
什么情况下需要做major upgrade. component的ID发生变化,component本身被删除或者属性被修改。merge modle的删除,修改。
Release的msi name被修改等都需要做major ugrade,否则安装、维护的过程会出现问题。
PS:自己可以在Upgrade那一个页面,定制minor upgrade, major upgrade的行为。
PS:对应minor upgrade, version的change不能只是AA.BB.CC.DD的最后“DD”部分的变化,否则component不会被Overwrite。
4: Prevent Downgrade
Windows Installer本身是基于Product Code来管理应用程序的,对应相同的Product Code的产品,它不支持降级。
PS:在Installshield 2011 Basic MSI Project中,Multi Instance的Release是可以进行降级的!(应该是Installshield的一个缺陷!)。
这里的Prevent Downgrade机制,是针对Major Upgrade而言。
但是对于Installshield安装包,它还支持Major Upgrade,即程序变化比较大的时候,如component本身发生了删除时,就需要做major upgrade。Major upgrade意味着Product Code需要发生变化,而Windows Installer就会把它们当作两个独立的安装包。加入Upgrade Code,就可以把这两个产品联系起来,并做一些自定义的动作(在Upgrade的页面进行设置),如安装新产品前对老产品进行卸载。在Install Shield 2009后,就有一套默认的机制来Prevent Downgrade.
5.Silent Installation以及UI Level
对应Basic MSI project来说,静默安装要注意:
1. UI Sequence在静默安装时,不会被执行。
2. UI level=2表上静默安装,在对应的脚本的地方,需要进行处理,否则静默安装会被block住。静默安装时,只有系统自己弹出的窗口会被忽略,用户自己的messagebox还是会弹出来。
6.Support Drectory
Basic MSI和Installshield Project不太一样的地方是,support dir需要用MSIGetProperty来获取。
还有就是获取当前安装包执行的路径:它包括以exe方式运行时,setup.exe的位置,以及以msi方式运行时的位置。它们分别对应”SETUPDIR” “SRCDIR”。即需要考虑这两种情况。
如果上面有写的不对的,可以用以下方式进行交流。
邮箱:whp_lcyz@163.com
1. 什么是Basic MSI Project
Basic MSI project就是制作基于Windows Installer Engine的安装Installshield包(Installshield提供有限的支持,如Prevent Downgrade等),即我们常见的MSI格式的安装文件(也可以是以EXE形式的安装文件),只支持一些基本的命令和Windows的API,一句话,只能使用Windows Installer Engine支持的命令和API。
2: Multi Release, Multi Instance
什么情况下会需要Multi Release呢?
一个产品,它有多种安装版本,如如权限的不同,就好象试用版,正式版,专业版之类的。但安装的主体逻辑是一样的,可以把它们放在同一个MSI Project里面。
什么情况系需要Multi Instance
一个产品A是另外多个产品的一部分,为了独立维护(安装、卸载、神经)产品A,所以,需要独立的Product Code, Upgrade Code。即需要Multi Instance.
2.2如何定制不同的Release, Instance
打包过程的定制:这个可以借助于Release Flag, 每个Release可以定义支持的Release Flag, 同时在Componet那边标上对应的Flag.
安装过程的定制:可以在component的condition里面设置对应的条件,只有在满足条件的情况下,这个component才会被安装。
脚本执行的定制:在Release里面有一个Predefine Processor的选项,定义一个条件编译护符,在脚本里面写 #ifdef …#endif
3.Upgrade
对应Basic MSI, upgrade 分为major upgrade, minor upgrade.
什么情况下会发生minor upgrade,版本的上涨,package code的变化都会导致minor upgrade.
什么情况下需要做major upgrade. component的ID发生变化,component本身被删除或者属性被修改。merge modle的删除,修改。
Release的msi name被修改等都需要做major ugrade,否则安装、维护的过程会出现问题。
PS:自己可以在Upgrade那一个页面,定制minor upgrade, major upgrade的行为。
PS:对应minor upgrade, version的change不能只是AA.BB.CC.DD的最后“DD”部分的变化,否则component不会被Overwrite。
4: Prevent Downgrade
Windows Installer本身是基于Product Code来管理应用程序的,对应相同的Product Code的产品,它不支持降级。
PS:在Installshield 2011 Basic MSI Project中,Multi Instance的Release是可以进行降级的!(应该是Installshield的一个缺陷!)。
这里的Prevent Downgrade机制,是针对Major Upgrade而言。
但是对于Installshield安装包,它还支持Major Upgrade,即程序变化比较大的时候,如component本身发生了删除时,就需要做major upgrade。Major upgrade意味着Product Code需要发生变化,而Windows Installer就会把它们当作两个独立的安装包。加入Upgrade Code,就可以把这两个产品联系起来,并做一些自定义的动作(在Upgrade的页面进行设置),如安装新产品前对老产品进行卸载。在Install Shield 2009后,就有一套默认的机制来Prevent Downgrade.
5.Silent Installation以及UI Level
对应Basic MSI project来说,静默安装要注意:
1. UI Sequence在静默安装时,不会被执行。
2. UI level=2表上静默安装,在对应的脚本的地方,需要进行处理,否则静默安装会被block住。静默安装时,只有系统自己弹出的窗口会被忽略,用户自己的messagebox还是会弹出来。
6.Support Drectory
Basic MSI和Installshield Project不太一样的地方是,support dir需要用MSIGetProperty来获取。
还有就是获取当前安装包执行的路径:它包括以exe方式运行时,setup.exe的位置,以及以msi方式运行时的位置。它们分别对应”SETUPDIR” “SRCDIR”。即需要考虑这两种情况。
如果上面有写的不对的,可以用以下方式进行交流。
邮箱:whp_lcyz@163.com
相关文章推荐
- [InstallShield] Basic MSI Project 中定制窗体验证 License
- Installshield 总结系列之Installshield Script Project
- [InstallShield] Basic MSI Project 中定制窗体验证 License
- SQL Server调优系列基础篇(常用运算符总结)
- 【转】Awk 命令学习总结、AWk命令系列学习(linux shell)
- 算法总结(5)--Duplicate 数组,链表中重复元素系列
- 大数据干货系列(三)-- Hadoop2.0总结
- day_1_13 JavaWeb系列学习总结之jsp&el&jstl
- nginx架构总结--nginx源码系列(一)
- Enterprise Library系列文章回顾与总结
- day_1_15 JavaWeb系列学习总结之JavaWeb实现分页查询
- 总结系列--AndroidManifest.xml文件详解
- 总结系列-触摸屏事件的传递机制
- Java总结篇系列:Java多线程 http://www.cnblogs.com/lwbqqyumidi/p/3804883.html
- 深度学习与人脸识别系列(7)__人脸识别算法简要说明与总结
- jQuery源码分析系列(37) : Ajax 总结
- STL容器总结系列(1)
- JQuery学习系列总结—用户名检测
- Java总结篇系列:Java多线程(一)
- [WCF安全系列]绑定、安全模式与客户端凭证类型:BasicHttpBinding