如何在Windows Installer的Custom Action中Sleep
来源:互联网 发布:剑灵捏完美身材数据 编辑:程序博客网 时间:2024/05/18 03:51
项目终于接近尾声,马上就要打包发布了。所以最近在研究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秒
- 如何在Windows Installer的Custom Action中Sleep
- 我的图片AI中 Custom Action
- 在kernel中如何sleep
- 如何查看Windows Installer的Log文件
- 在SharePoint中动态添加修改Custom Action
- InstallShield的Custom Action
- Windows命令行中如何实现Sleep
- clock(), sleep(), Sleep()在windows和Linux的区别
- clock(), sleep(), Sleep()在windows和Linux的区别
- 如何在c++中使用Sleep函数
- Windows Installer 的功能
- 如何查看自己电脑上windows installer的版本?
- WiX Custom Action 的deferred !
- Windows和Linux中Sleep()的差异
- windows下,在python中安装xgboost的简易方法,解决 error C3861: “sleep”: 找不到标识符”
- 如何使用打包中的Custom Action
- 如何在JBPM的Action中访问Spring中的JavaBean
- 在struts2.0的action中如何弹出信息提示
- JSP2的自定义标签
- for循环下,printf与cvmGet的奇怪问题
- socket使用指南终于翻译完毕
- 1月17日
- SWFUpload
- 如何在Windows Installer的Custom Action中Sleep
- morphia for MongoDB
- Davinci DM6446开发攻略——u-boot-1.3.4移植(1)
- Adobe Reader 无法找到或创建字体'宋体'
- 惰性删除的AVL Tree
- 为什么要使用spring
- 《回来看看》
- CreateEvent使用总结
- Davinci DM6446开发攻略——linux-2.6.18移植