使用WiX制作具有时间限制的安装包
最近研究了一下如何使用WiX制作具有时间限制的安装包,下图是demo的效果图。
完成这个demo主要有两点值得注意:
1. 选择合适的脚本语言(VBScript or JScript)实现定制操作。
2. 选择合适的实际执行上面的脚本。
下面分享我的实现过程:
1. 实现一段检查当前时间是否越界的脚本代码,并将它封装到CustomAction中。
使用VBScript比较当前日期和限定日期,小于0表示越界,这时调用WScript想注册表添加坏键。
- <CustomAction Id="ValidateTimeLimitCA" Script="vbscript" Execute="immediate" >
- <![CDATA[
- If DateDiff("d", Date, #2011/07/31#) < 0 Then
- Set WShell = CreateObject("WScript.Shell")
- WShell.RegWrite "HKCU\Software\GrapeCity\TimeLimit\DateDiff", 1, "REG_DWORD"
- Set WShell = Nothing
- End If
- ]]>
- </CustomAction>
2. 选择合适的时机执行上述脚本,越早越好。
在本文的demo中,我在PrepareDlg之前执行脚本,对于大多数情况而言,这已经是最早的时机了。当然,你也可以选择在AppSearch之前执行。
- <InstallUISequence>
- <Custom Action="ValidateTimeLimitCA" Before="PrepareDlg" />
- </InstallUISequence>
3. 添加一个RegistrySearch属性,用于第一步提到的坏键。
- <Property Id="TIMELIMIT">
- <RegistrySearch Id="TIMELIMIT_VALUE" Root="HKCU" Key="Software\GrapeCity\TimeLimit" Name="DateDiff" Type="raw" />
- </Property>
4. 添加Condition用于检查第三步添加的属性是否存在,并在需要的时候弹出错误信息。
- <Condition Message="This is package is out of date at July 31, 2011">
- Installed OR NOT TIMELIMIT
- </Condition>
5. 实现一个清除操作,用于清除第一步添加的坏键。
- <CustomAction Id="CleanupTimeLimitCA" Script="vbscript" Execute="immediate" >
- <![CDATA[
- Set WShell = CreateObject("WScript.Shell")
- WShell.RegDelete "HKCU\Software\GrapeCity\TimeLimit\"
- Set WShell = Nothing
- >
- </CustomAction>
6. 在FatalError对话框中发布Finish事件,同时将值设置给第五步提到的清除操作。
- <UI>
- <UIRef Id="WixUI_Minimal" />
- <Publish Dialog="FatalError" Control="Finish" Event="DoAction" Value="CleanupTimeLimitCA">1</Publish>
- </UI>
到这里就完成,代码很简单,希望有价值。
本文转自 powertoolsteam 51CTO博客,原文链接:http://blog.51cto.com/powertoolsteam/710316,如需转载请自行联系原作者
使用WiX制作具有时间限制的安装包相关推荐
- 用VS.NET2003制作WEB应用程序的安装包
用VS.NET2003制作WEB应用程序的安装包 --------------------------------------------------------------------------- ...
- 制作全集成定制版Office2007安装包
一.集成Visio2007和Project2007 首先用UltraISO解压开Office2007.Visio2007.Project2007的ISO镜像文件到硬盘任意目录,我这里用的是Office ...
- Advanced Installer 制作带升级功能的安装包
使用场景: 我们通常使用AdvancedInstaller打包工具制作的安装包只有基础的安装功能,对于已经安装旧版本的环境下如果想要升级到新的版本,使用新版本的安装包通常会出现一些问题,这里我们介绍如 ...
- 用inno setup制作管理员权限启动的安装包
inno setup制作的安装包,默认是不需要管理员权限启动的.我们制作安装包,往往需要做一些设置工作,这些设置工作可能用到管理员权限.使用Resource Hacker修改inno setup资源, ...
- 如何制作绿盾终端静默安装包
前言:静默安装包,是指双击后没有安装界面,直接连接指定的服务器地址和端口来进行安装的安装包.主要用在域推送安装和需要更改端口的安装(比如公司没有公网IP,用花生壳内网穿透来实现外网连接,端口会变掉). ...
- Wix安装包制作-个人总结
Wix是微软免费提供的制作msi安装包的工具,在 www.tramontana.co.hu/wix可以下载得到该软件,也可以下载得到源代码,其中的example目录下包括有部分制作好的实例,doc目录 ...
- 兮米安装包制作工具 制作bin包 教程
兮米安装包制作工具的简介 1.兮米安装包制作工具是一款专业的傻瓜式 安装包制作 软件,该软件拥有让初学者上手容易.制作的安装程序功能完善等优点,无需任何复杂的脚本操作,只需填写制作器中提供的安装包配置 ...
- 制作Windows Mobile程序安装包
使用Visual Studio 2005制作wm上的cab安装包 打开项目,解决方案中添加新项,添加"智能设置CAB项目":或者在空VS中新建一个"智能设置CAB项目&q ...
- 7z制作自解压安装包
像7z和winRAR这样的压缩工具都支持制作自解压的文件.所谓自解压的文件就是不需要目标机器上安装解压工具,通过运行压缩包自己即可解压出压缩包中的文件.下面我们就介绍一下如何利用7z的自解压功能制作应 ...
最新文章
- 手把手教你搭建一个基于Java的分布式爬虫系统
- 【bzoj3575】 Hnoi2014—道路堵塞
- Git 之一 起源、安装、配置
- leetcode 383. 赎金信 思考分析
- Adobe 2022软件安装错误代码107解决办法
- basic code
- 本文介绍了跨浏览器的CSS固定定位
- EntityFramework6 用 PostgreSQL
- Spark中加载本地(或者hdfs)文件以及SparkContext实例的textFile使用
- 数据库课程设计:图书借阅管理系统(控制台交互)
- 讯飞语音合成 如何选择发音人
- 拜师——python基础入门—第3大节课—列表,排序,revered逆序,max,min,sum——day15
- 史上最详细的AVL树(含代码实现)
- 《MySQL必知必会》第8篇:存储过程、函数
- 如何实现微信和淘宝的扫码登录
- Mac Pro 触摸板按压失效(没有按压回弹效果)
- 2021年展望Android原生开发的现状,你不懂还不学?
- Error creating bean with name ‘dataSource‘: Error setting property,river for test database type [HSQ
- Flutter进阶—通用布局控件
- ncr管理系统_建设银行北京分行采用NCR的系统管理软件