还是关于安装完毕后启动程序的问题
2010-10-20 20:54
381 查看
之前提出过两个类似的问题,都没有得到满意的答复根据微软的帮助,制作了继承与Installer类的一个自动运行的类
现在的问题是:在弹出结束安装窗口之前的确能够起到M.exe,但是,在启动M之后安装结束窗口仍然存在,
也就是说安装程序和M同时存在了,
在M打开后,还需手动去关闭安装程序的最后一个结束窗口。
有什么办法可以在安装程序的最后一个窗口关闭之后再打开M?
里启动,但是好像根本没反应,似乎没有执行到这里一样,
不能让M去关掉安装程序最后一个窗口么?这样做可能是可以的,但是感觉有点“有始无终”,好像安装还没完成一样,
有时间的话研究下wix下吧,解决这个问题很简单,添加一个Custom Action,几行xml标记就可以,不用写任何c#代码;最近我刚好把相关的资料整理了一下,不过还没写完,有兴趣可以参考
Installer类编译后,需要在安装程序的自定义操作中的安装选项中添加进来。这样Installer中的事件才会触发。另外即使在OnAfterInstall事件中写启动程序,这个时候安装程序最后一步退出仍然没有执行,界面还是存在的。解决方法未知。期待做过的大虾提示。。。在创建的类中加入重载代码
然后, 在你建立的打包项目中,在custom action(自定义操作)中的安装上点右键新建,选择你的启动程序,应该就可以了
放心吧,wix是完全免费的,它是微软根据windows installer使用c#开发的一个打包工具,完全兼容vs
这段代码的作用就是把安装程序结束界面置到(被调用程序的)前面感觉自然一点,
但是还是有些怪怪的,能否做到: 先关闭安装程序-->再启动被调用程序
windows installer本身就带有启动应用程序的Action,完全不用再写Action来实现的,但是vs自带的打包应该很难实现这种效果;如果自己写Action也不容易实现,因为所有的Action(包括自定义的Action)都包含在InstallExecuteSequence或者InstallUISequence序列中,这些序列都在ExitDialog(结束界面)调用之前就执行完了,所以要在最后执行程序,我们必须把Action绑定到完成按钮的事件上,使用wix或者直接编辑msi可以达到这种效果,下面是直接编辑msi实现方法:首先下载orca,它是msi数据库编辑工具。
使用orca打开msi文件,在Tables列表中找到CustomAction表,添加新行
Source字段值就是你执行文件的名称,它是File表的外键,必须跟File表中File列的值对应
保存修改后的msi文件,就大功告成了,此方式已测试,绝对可行
有点大意了,之前回复中我用的还是wix的安装界面,发现vs打包的程序最后的界面不是ExitDialog,而是FinishedForm,因此需要上面ControlEvent表添加的记录修改
你就不能学下其他软件么
弄一个checkbox,Text就是 安装结束启动程序
打钩的话 安装完毕点关闭 就启动程序啊 这样不就可以了
来源:足球直播
现在的问题是:在弹出结束安装窗口之前的确能够起到M.exe,但是,在启动M之后安装结束窗口仍然存在,
也就是说安装程序和M同时存在了,
在M打开后,还需手动去关闭安装程序的最后一个结束窗口。
有什么办法可以在安装程序的最后一个窗口关闭之后再打开M?
里启动,但是好像根本没反应,似乎没有执行到这里一样,
不能让M去关掉安装程序最后一个窗口么?这样做可能是可以的,但是感觉有点“有始无终”,好像安装还没完成一样,
有时间的话研究下wix下吧,解决这个问题很简单,添加一个Custom Action,几行xml标记就可以,不用写任何c#代码;最近我刚好把相关的资料整理了一下,不过还没写完,有兴趣可以参考
Installer类编译后,需要在安装程序的自定义操作中的安装选项中添加进来。这样Installer中的事件才会触发。另外即使在OnAfterInstall事件中写启动程序,这个时候安装程序最后一步退出仍然没有执行,界面还是存在的。解决方法未知。期待做过的大虾提示。。。在创建的类中加入重载代码
然后, 在你建立的打包项目中,在custom action(自定义操作)中的安装上点右键新建,选择你的启动程序,应该就可以了
放心吧,wix是完全免费的,它是微软根据windows installer使用c#开发的一个打包工具,完全兼容vs
这段代码的作用就是把安装程序结束界面置到(被调用程序的)前面感觉自然一点,
但是还是有些怪怪的,能否做到: 先关闭安装程序-->再启动被调用程序
windows installer本身就带有启动应用程序的Action,完全不用再写Action来实现的,但是vs自带的打包应该很难实现这种效果;如果自己写Action也不容易实现,因为所有的Action(包括自定义的Action)都包含在InstallExecuteSequence或者InstallUISequence序列中,这些序列都在ExitDialog(结束界面)调用之前就执行完了,所以要在最后执行程序,我们必须把Action绑定到完成按钮的事件上,使用wix或者直接编辑msi可以达到这种效果,下面是直接编辑msi实现方法:首先下载orca,它是msi数据库编辑工具。
使用orca打开msi文件,在Tables列表中找到CustomAction表,添加新行
Source字段值就是你执行文件的名称,它是File表的外键,必须跟File表中File列的值对应
保存修改后的msi文件,就大功告成了,此方式已测试,绝对可行
有点大意了,之前回复中我用的还是wix的安装界面,发现vs打包的程序最后的界面不是ExitDialog,而是FinishedForm,因此需要上面ControlEvent表添加的记录修改
你就不能学下其他软件么
弄一个checkbox,Text就是 安装结束启动程序
打钩的话 安装完毕点关闭 就启动程序啊 这样不就可以了
来源:足球直播
相关文章推荐
- 关于"没有找到MFC80UD.DLL,因此这个程序未能启动.重新安装应用程序可能会修复此问题"的解决方案
- 关于vs2002调试时提示:试图运行项目时出错:无法启动调试 没有正确安装调试器。请运行安装程序安装或修复调试器
- 关于VMWARE虚拟机安装GHOST版XP后不能硬盘启动问题
- [VS2008] Debug版本程序发布后 由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题 解决方法
- 关于win7 64位系统安装apache的 教程 httpd2.4服务无法启动 443端口被占用问题
- VS2008 应用程序配置不正确,未能启动该应用程序。重新安装程序可以修复此问题。解决方法
- 没有找到MFC80UD.DLL"没有找到MFC80UD.DLL,因此这个程序未能启动.重新安装应用程序可能会修复此问题"
- 解决VS2008程序的由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题
- 关于vs2003调试时提示:试图运行项目时出错:无法启动调试 没有正确安装调试器。请运行安装程序安装
- 关于tomcat5.5或6.0免安装版,点击startup.bat启动自动消失问题
- Visual Studio- “无法启动此程序,因为计算机中丢失 xxx.dll尝试重新安装该程序以解决此问题"
- 无法启动此程序,因为计算机中丢失VCRUNTIME140.dll 尝试重新安装此程序以解决此问题
- C++编译过程中"没有找到MFC80UD.DLL,因此这个程序未能启动.重新安装应用程序可能会修复此问题"? 的彻底解决
- php-cgi.exe系统错误 无法启动程序,因为计算机中丢失api-ms-win-crt-conio-l1-1-0.dll 尝试解决安装该程序以解决此问题
- 关于从NAND Flash启动的问题,2440 启动问题 , 拷贝4k程序 ,启动代码分析
- 无法启动此程序,因为计算机中丢失VCRUNTIME140.dll 尝试重新安装此程序以解决此问题
- 无法启动此程序,因为计算机中丢失opencv_world310.dll。请尝试重新安装改程序已解决此问题
- 关于VMWARE虚拟机安装GHOST版XP后不能硬盘启动问题
- VS.NET Beta2安装后添加/删除程序不能正常启动的问题的解决方案
- VS2008调试程序时出现“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题”的解决办法