使用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>到这里就完成,代码很简单,希望有价值。
源码下载地址如下:
图、文、代码并茂,很受益 :strong: 感谢德艺双馨的dof老师的点评! 关山千里暮云平,看似无情却有情,louboutin。
征雁归乡传信去,abercrombie paris,素笺寄思已书成,doudoune moncler。
千秋晨固家园泰,louboutin pas cher,几度花开满月明,coach handbags。
但赏九州盈笑语,moncler,谁为博得一虚名?
李商隐:《览古》
莫恃金汤忽太平,coach outlet,草间霜露古今情。
空糊赪壤真何益,欲举黄旗竟未成。
长乐瓦飞随水逝,abercrombie,景阳钟堕失天明。
回头一吊箕山客,moncler,始信逃尧不为名,abercrombie and fitch paris。
Related articles:
]小伙因名字女性化三次失业
apparatus
我用寂寞酿成了酒
"The rapid growth of banks' wealth management business may increase systemic financial risks and affect the implementation of monetary policies because common monetary tools cannot directly affect the flow of capital to these products," said Liu Xiaoxin, an economics professor at Nankai University in Tianjin.
页:
[1]