如何在Windows Installer的Custom Action中Sleep

原创 2011年01月17日 17:22:00

项目终于接近尾声,马上就要打包发布了。所以最近在研究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秒

 

Custom Action in Visual Studio setup projects (解决C#安装程序安装第三方DLL的问题)

http://www.codeproject.com/Articles/335516/Custom-Action-in-Visual-Studio-setup-projects Intr...
  • kezhen
  • kezhen
  • 2014年12月29日 10:54
  • 1606

MSI Custom Action用管理员权限去执行

最近在维护之前一些VS 2005自带的安装包工程做了msi的安装包 发现在Custom Action中执行一些exe等 没有获得Admin权限,导致操作失败。 经过网上搜索解决方案发现,需要修改属性,...
  • linlin003
  • linlin003
  • 2016年04月29日 18:10
  • 433

Servlet(Action)之间的数据传递

Servlet(Action)之间的数据传递1:如何让用户的请求数据从一个Servlet传递给另一个Servlet     第一种方式:通过超链接传递数据     第二种方式:通过表传递取参数。   ...
  • yinyuan1987
  • yinyuan1987
  • 2008年11月01日 20:03
  • 6588

SVN安装过程出现“Custom action InstallWMISchemaExecute failed:服务不存在,或已被标记为删除”

svn错误,求解!
  • u013047824
  • u013047824
  • 2015年05月17日 20:57
  • 5614

今天安装VisualSVN 不小心删掉了安装目录,再次安装 修改 移除提示UninstallWMISchemaExecute (0x8004401e) when updating VisualSV

参考资料: UninstallWMISchemaExecute (0x8004401e) when updating VisualSVN on Windows XP 7. May 2012 by ...
  • studyvcmfc
  • studyvcmfc
  • 2013年02月03日 23:34
  • 5901

SVN服务器端安装过程出现“Custom action InstallWMISchemaExecute failed:无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。”

今天在Windows操作系统中安装SVN服务器端软件的过程中出现了“Custom action InstallWMISchemaExecute failed:无法启动服务,原因可能是已被禁用或与其相关...
  • wangshuxuncom
  • wangshuxuncom
  • 2015年12月03日 21:57
  • 3303

Jsp中如何接收Struts的Action中放入值栈中的内容

本文解决的内容为: Struts中的Action得到Service中返回的List。如何把List传给表现层的JSP来展现出List中的数据。 Action中片段Code: List ...
  • kalision
  • kalision
  • 2012年04月19日 20:12
  • 6140

svn服务器搭建和使用:Custom action GenerateSSLKey failed: Command terminated with non-zero exit code

安装VisualSVN-Server的时候next提示:Custom action GenerateSSLKey failed: Command terminated with non-zero e...
  • OnInit
  • OnInit
  • 2013年08月23日 19:25
  • 4857

java日志打印建议

java日志打印建议     在action中catch到Exception的时候用以下语句将异常记录到日志文件中,以下写法可以保证异常堆栈的信息被记录到...
  • ccecwg
  • ccecwg
  • 2014年04月01日 13:42
  • 413

如何解决SVN服务器端安装过程出现 “Custom action InstallWMISchemaExecute failed:无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。”

第一次写博客,把自己之前安装SVN小乌龟遇到的一个小问题写在这上面。   下面进入正文,安装过程都是直接点下一步,但是最后的时候遇到一个问题,导致安装失败。    “Custo...
  • F2361846314
  • F2361846314
  • 2017年01月11日 10:58
  • 636
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何在Windows Installer的Custom Action中Sleep
举报原因:
原因补充:

(最多只允许输入30个字)