连同参数,在目标计算机上就等同于
\你的产品的 Product Code}
如果你按照上面说的方法采用 UNINSTALL_STRING,并调试输出其值,你会发现它就是上面的内容 ^oo^
--------------------------------------------------------------------------------
为什么第二次运行安装程序的时候毫无提示就卸载了以前的版本并没有调用 OnMaintUIBeforeXXXX 或者 OnUnInstall? 注意下图:
在 Tools 菜单中选择 Options,在弹出窗口的 Preferences 这一页去掉对 \installing\的选中,重新编译并运行。
如果 Enable Maintenance 的设置为 Yes,执行 Setup.exe 完成安装,然后再次执行 Setup.exe 就会出现下图所示的维护界面:
如果 Enable Maintenance 的设置为 No,则执行 OnUninstall 事件处理函数的脚本。如果不想出现那个讨厌的提示框,那你爱怎么改就怎么改了 ^oo^ Feedback
# XiaoZhu.com: [InstallShield] 卸载相关问题 2004-10-24 12:35 piggybank Ping Back来自:blog.csdn.net
# re: [InstallShield] 卸载相关问题 2004-10-27 10:19 pk piggybank,请教两个问题。
1.用installshield X,能在脚本里远程调用另外一台机器里的可执行程序吗?我用LaunchAppAndWait()试过,不行。
2.安装程序如何要实现以下功能:先往被安装机器里拷贝一些文件,修改注册表,重新启动机器,然后执行先前刚拷到机器里的一个可执行程序。 谢谢!
# re: [InstallShield] 卸载相关问题 2004-10-27 11:07 piggybank pk,不用客气
1、InstallShield 中涉及到 LaunchAppAndWait 等不支持网络资源访问。但是可以测试一下先把网络资源映射为本地硬盘,应该是可以的。
2、启动时运行,一般都是在注册表的 Run、RunOnce 或者启动组方一个快捷方式来实现的。 比如:
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnceEx HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunServices HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunServicesOnce
InstallShield 自己也支持安装过程中中途重新启动,下次继续。
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnceEx
HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Session Manager\\FileRenameOperations
比如 IS 会监视在安装过程中上述注册表位置下的项是否发生变化,如果发生变化表明需要重新启动。 当然,在你的需求里只要把你要运行的程序的快捷方式放到快捷组里就足够了。
# re: [InstallShield] 卸载相关问题 2004-10-28 10:48 pk piggybank,谢谢你的答复!
怪我自己,昨天没把情况讲清楚。
其实我现在遇到的问题是:
刚刚完成了一个JSP作的信息管理系统,B/S的。数据库用的是ORACLE9i,OS是windows2000server,我本来按照以往的方法作好了一个在数据库服务器本地执行的数据库安装和初始化程序SRVINST,包括创建用户、建表等等。是由批处理命令和SQL文件组成的,功能和你提供的xzSQLDeploy类似(我的没有GUI界面,难看些,呵呵)。现在项目要验收了,用户忽然要求作一个所谓的数据库远程安装程序,就是说在任何一台联网的机器上(可能没有安装ORACLE客户端),只要运行安装程序,就能对指定的数据库服务器进行数据库的安装和初始化,当然前提是服务器端的ORACLE实例已经建好,并且监听和实例等服务都启动了。
我原本考虑了两个解决的方法:
第一就是看能否在InstallShield里能否远程访问?如果行,就直接调用服务器上的SQLPLUS执行本地的SRVINST。也就是我昨天问你的问题1。不过看来好像不行呀,我不能要求用户在安装前先将服务器网络资源映射为本地硬盘呀。领导那儿也通不过的。
第二就是干脆将ORACLE的客户端打包到安装程序里(虽然有点版权问题,好在服务器端的ORACLE是用户掏钱了的,将就点了)。 具体是:
1.将打包的ORACLE 9i的客户端文件和数据库创建及初始化程序SRVINST(install.bat与SQL文件)拷贝到执行安装程序的本地机器上。
2.显示一对话框,让用户输入远程的ORACLE 服务器的机器名。
3.修改本地ORACLE 9i的客户端中$ORACLE_HOME\\network\\admin\\tnsnames.ora文件, 将“HOST = pk”
改为“HOST = 用户输入的ORACLE 服务器的机器名”。 4.导入有关ORACLE 9i的客户端的注册表。 5.重新启动机器。
6..在脚本里通过LaunchAppAndWait()函数本地调用install.bat文件,远程创建数据库及初始化。
在安装过程中重新启动机器然后继续剩余的安装过程,对于这一点我一直没能解决,也就是我昨天跟你请教的问题2了。
呵呵,罗嗦了半天,不知道讲清楚了没。主要是我觉得你讲的在注册表里进行处理来解决重新启动的方法对我好像不适用,同时也是想听听你的意见,看看我这么处理好不好。
对了,昨天在CSDN上查到一篇有你的回复的帖子:
http://search.csdn.net/Expert/topic/2105/2105147.xml?temp=.7887689
你那个处理方法好像适合我,但是我试了试,没成功。可能是哪个地方用得不对,我刚刚用INSTALLSHIELD X,很多地方不清楚,能否请你说得详细点。我的MSN是:pk010@hotmail.com,能否加我?
说句题外话,你文章里的图片是用什么软件处理的,蛮漂亮呀,想学学。
# re: [InstallShield] 卸载相关问题 2004-10-28 11:10 piggybank
对于 网络映射,其实可以用 cmd shell 提供的 net.exe 实现: net use ...(用 net help use 察看详细信息)。当然,这个方法并不好。
你说的在目标计算机上安装客户端是一个办法。事实上,该计算机如果有需要对远端的数据库服务器进行操作,那就表明该计算机被用作管理计算机。所以,安装 Oracle 客户端在逻辑上是很正确的。 还有一个替代办法就是采用 java 写一段程序去设置远端数据库服务器,然后编译为 exe,采用 JDBC 适当的驱动,就不必依赖客户端支持了。但同样地要部署 J2SE/J2SD 和 JDBC 驱动,也一样麻烦,呵呵。(这一点倒是提醒我可以继 xzSQLDeploy 之后做一个 java 版本支持 oracle/mysql)
对于 Web 应用的部署,我一直认为在安装过程中进行 WebServer/DBServer 配置并不是一个好办法。也就是说这与安装本身在逻辑上是不同的两件事情。
其实看你列出来的步骤,运行 Install.bat 其实已经是安装完毕之后的事情了。逻辑上也和上面的观点一致。那么,就与那个帖子中提到的“重启之后继续安装”有所区别。 因此,重点解决“如何重启”,或者“如何提示用户重启”的问题即可。
对于重新启动,上面的回复中已经提到 IS 在安装过程中如果发现启动组或者那些注册表项内容变化就会在结束安装时提示用户重新启动。如果要强制重新启动或者明确地提示用户需要重新启动,就要在脚本中改一改。
比如采用 sdFinishReboot 或者 RebootDialog 对话框(麻烦看一下帮助,最近比较忙)。系统重新启动后执行你的批处理,就 OK 了。
呵呵,至于图片嘛...
是用 SnagIt 7.x 抓图,并用它的图片处理功能处理的,值得推荐 ^oo^
# re: [InstallShield] 卸载相关问题 2004-10-28 11:16 piggybank 对了,记得 System 可以重新启动系统,补充查了一下参数:

