最近研究了一下如何使用WiX制作具有时间限制的安装包,下图是demo的效果图。

完成这个demo主要有两点值得注意:

1. 选择合适的脚本语言(VBScript or JScript)实现定制操作。

2. 选择合适的实际执行上面的脚本。

下面分享我的实现过程:

1. 实现一段检查当前时间是否越界的脚本代码,并将它封装到CustomAction中。

使用VBScript比较当前日期和限定日期,小于0表示越界,这时调用WScript想注册表添加坏键。

  1. <CustomAction Id="ValidateTimeLimitCA" Script="vbscript" Execute="immediate" >
  2. <![CDATA[
  3. If DateDiff("d", Date, #2011/07/31#) < 0 Then
  4. Set WShell = CreateObject("WScript.Shell")
  5. WShell.RegWrite "HKCU\Software\GrapeCity\TimeLimit\DateDiff", 1, "REG_DWORD"
  6. Set WShell = Nothing
  7. End If
  8. ]]>
  9. </CustomAction>

2. 选择合适的时机执行上述脚本,越早越好。

在本文的demo中,我在PrepareDlg之前执行脚本,对于大多数情况而言,这已经是最早的时机了。当然,你也可以选择在AppSearch之前执行。

  1. <InstallUISequence>
  2. <Custom Action="ValidateTimeLimitCA" Before="PrepareDlg" />
  3. </InstallUISequence>

3. 添加一个RegistrySearch属性,用于第一步提到的坏键。

  1. <Property Id="TIMELIMIT">
  2. <RegistrySearch Id="TIMELIMIT_VALUE" Root="HKCU" Key="Software\GrapeCity\TimeLimit" Name="DateDiff" Type="raw" />
  3. </Property>

4. 添加Condition用于检查第三步添加的属性是否存在,并在需要的时候弹出错误信息。

  1. <Condition Message="This is package is out of date at July 31, 2011">
  2. Installed OR NOT TIMELIMIT
  3. </Condition>

5. 实现一个清除操作,用于清除第一步添加的坏键。

  1. <CustomAction Id="CleanupTimeLimitCA" Script="vbscript" Execute="immediate" >
  2. <![CDATA[
  3. Set WShell = CreateObject("WScript.Shell")
  4. WShell.RegDelete "HKCU\Software\GrapeCity\TimeLimit\"
  5. Set WShell = Nothing
  6. >
  7. </CustomAction>

6. 在FatalError对话框中发布Finish事件,同时将值设置给第五步提到的清除操作。

  1. <UI>
  2. <UIRef Id="WixUI_Minimal" />
  3. <Publish Dialog="FatalError" Control="Finish" Event="DoAction" Value="CleanupTimeLimitCA">1</Publish>
  4. </UI>

到这里就完成,代码很简单,希望有价值。

本文转自 powertoolsteam 51CTO博客,原文链接:http://blog.51cto.com/powertoolsteam/710316,如需转载请自行联系原作者

使用WiX制作具有时间限制的安装包相关推荐

  1. 用VS.NET2003制作WEB应用程序的安装包

    用VS.NET2003制作WEB应用程序的安装包 --------------------------------------------------------------------------- ...

  2. 制作全集成定制版Office2007安装包

    一.集成Visio2007和Project2007 首先用UltraISO解压开Office2007.Visio2007.Project2007的ISO镜像文件到硬盘任意目录,我这里用的是Office ...

  3. Advanced Installer 制作带升级功能的安装包

    使用场景: 我们通常使用AdvancedInstaller打包工具制作的安装包只有基础的安装功能,对于已经安装旧版本的环境下如果想要升级到新的版本,使用新版本的安装包通常会出现一些问题,这里我们介绍如 ...

  4. 用inno setup制作管理员权限启动的安装包

    inno setup制作的安装包,默认是不需要管理员权限启动的.我们制作安装包,往往需要做一些设置工作,这些设置工作可能用到管理员权限.使用Resource Hacker修改inno setup资源, ...

  5. 如何制作绿盾终端静默安装包

    前言:静默安装包,是指双击后没有安装界面,直接连接指定的服务器地址和端口来进行安装的安装包.主要用在域推送安装和需要更改端口的安装(比如公司没有公网IP,用花生壳内网穿透来实现外网连接,端口会变掉). ...

  6. Wix安装包制作-个人总结

    Wix是微软免费提供的制作msi安装包的工具,在 www.tramontana.co.hu/wix可以下载得到该软件,也可以下载得到源代码,其中的example目录下包括有部分制作好的实例,doc目录 ...

  7. 兮米安装包制作工具 制作bin包 教程

    兮米安装包制作工具的简介 1.兮米安装包制作工具是一款专业的傻瓜式 安装包制作 软件,该软件拥有让初学者上手容易.制作的安装程序功能完善等优点,无需任何复杂的脚本操作,只需填写制作器中提供的安装包配置 ...

  8. 制作Windows Mobile程序安装包

    使用Visual Studio 2005制作wm上的cab安装包 打开项目,解决方案中添加新项,添加"智能设置CAB项目":或者在空VS中新建一个"智能设置CAB项目&q ...

  9. 7z制作自解压安装包

    像7z和winRAR这样的压缩工具都支持制作自解压的文件.所谓自解压的文件就是不需要目标机器上安装解压工具,通过运行压缩包自己即可解压出压缩包中的文件.下面我们就介绍一下如何利用7z的自解压功能制作应 ...

最新文章

  1. 手把手教你搭建一个基于Java的分布式爬虫系统
  2. 【bzoj3575】 Hnoi2014—道路堵塞
  3. Git 之一 起源、安装、配置
  4. leetcode 383. 赎金信 思考分析
  5. Adobe 2022软件安装错误代码107解决办法
  6. basic code
  7. 本文介绍了跨浏览器的CSS固定定位
  8. EntityFramework6 用 PostgreSQL
  9. Spark中加载本地(或者hdfs)文件以及SparkContext实例的textFile使用
  10. 数据库课程设计:图书借阅管理系统(控制台交互)
  11. 讯飞语音合成 如何选择发音人
  12. 拜师——python基础入门—第3大节课—列表,排序,revered逆序,max,min,sum——day15
  13. 史上最详细的AVL树(含代码实现)
  14. 《MySQL必知必会》第8篇:存储过程、函数
  15. 如何实现微信和淘宝的扫码登录
  16. Mac Pro 触摸板按压失效(没有按压回弹效果)
  17. 2021年展望Android原生开发的现状,你不懂还不学?
  18. Error creating bean with name ‘dataSource‘: Error setting property,river for test database type [HSQ
  19. Flutter进阶—通用布局控件
  20. ncr管理系统_建设银行北京分行采用NCR的系统管理软件

热门文章

  1. 微软Silverlight 3正式版
  2. canvas简单实现动态时钟
  3. PHP正则匹配6到16位字符组合(且只能为数字、字母、下划线)
  4. Python发布自己的模块到Pypi
  5. 大坑:用SQLyog连mysql的部分操作不能同步到从库
  6. 有意思的clip-path
  7. 1386兆瓦:东能源拟建全球最大海上风电场
  8. Num37 spring 事务 ssh整合
  9. CentOS 下无线网卡的安装和使用
  10. Innodb 与自增长auto_increment