关闭

如何在Windows Installer的Custom Action中Sleep

255人阅读 评论(0) 收藏 举报

项目终于接近尾声,马上就要打包发布了。所以最近在研究Wix 3.5。Wix是一个Free的全脚本打包工具,是和MSI的每个指令一一对应的,所以比较原始,如果你不想很深入的研究MSI,那么你就去用Installer Sheild,这个工具够傻瓜,并且把MSI里面的细节都封装好了,只需按照向导就可以完成打包。

如果你感觉Installer Sheild还是复杂,那就用VS自带的打包工程,这个就更傻瓜了。

如果你想免费,又想精确控制每个安装步骤,并且想在安装完毕后执行些脚本,那么选择WIX 准没错。

我们的产品就是如此,安装比较复杂,并且安装完毕后还要执行一些VBS,所以我们选择了Wix

安装完Wix Visual Studio插件以后,就可以在Windows里面直接编译Wix项目了,其实Wix项目文件就是一个xml文件,说的编译,其实就是针对这个xml文件分析,然后生成MSI文件。

这里就不深入介绍如何编写这个WIX的XML文件啦,我想在这里介绍一个小发现,我先描述一下项目的需求:

1,安装

2,安装完毕后,执行一个脚本,

3,如果是XP系统,需要在脚本内Sleep 3000,然后继续执行

结果发现WIX不支持Sleep,具体的说是因为Custom Action不支持,所以无法Sleep。

在国内外找了一个小时,大家都在抱怨这个问题,但是没什么好的解决方案,其中一个workround是再写一个VBS,然后在Custom Action里面用Wshell.run "sleep.vbs",0, true,来调用。

但是要为此多增加一个vbs到安装包中,感觉很不爽,那有没有更好的方法呢,于是就想有没有Wshell.run "cmd /c xxx", 0, true之类的指令呢?

无意中发现可以通过Ping来解决,其实原理就是ping自己,每次ping的时间间隔大概是1秒所有,加入

 

WshShell.Run "cmd /c ping -n 3 -w 1000 127.0.0.1 >NUL", 0, True

 

打包,运行,没问题!

在看一下ping的参数,-n 3代表的是ping 3次, -w 1000代表是每次ping 的timeout时间, 这样就能让安装程序在这里停上3秒

 

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:552次
    • 积分:21
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档