在InstallShield中判断是否已安装老版本程序

 
 

     在制作Installer中,有一些安装包,要求先把老版本的程序卸载后,才能安装最新的程序。这样就设计涉及如何检查当前电脑是否已经安装过老版本的程序,如果安装过老的程序,就应该提示用户先把老版本的程序卸载了,才能安装最新的程序。
     InstallShield里的Product Code这个选项,就是一个特定是产品编码,来确定是否是同一个软件的同一个版本。一般我们在有新的版本要发布的时候,都需要修改这个Product Code。比如我的产品:
     1.0.1:
         {2A15BA78-5070-4D58-9D87-1CB4EF9F0591}
     1.0.2:
         {60576944-6FF1-4B24-99DD-3F1C93ADA9C2}
     现在我有最新的2.0.1要发布,其Product Code为:
        {E6246A67-2A88-49C4-B949-40AC600BBDAA}
     我想安装2.0.1的时候,检查1.0.1、1.0.2...等版本是否被安装过,如果安装过,提示用户卸载了再来安装我的2.0.1。
不管怎么样我们先在InstallScript的脚本文件中,建立如下的函数:

export prototype CheckOldVersion(HWND);   

function CheckOldVersion(hMSI)
begin
    RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
    if( (RegDBKeyExist("\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{2A15BA78-5070-4D58-9D87-1CB4EF9F0591}")>0)
     || (RegDBKeyExist("\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{60576944-6FF1-4B24-99DD-3F1C93ADA9C2}")>0) )then
         MessageBox("1Another version of this product is already installed.\nInstallation of this version cannot continue. To \nconfigure or remove the existing version of this product,\nuse Add/Remove Programs on the Control Panel.",WARNING);
         abort;
    endif;
     return ERROR_SUCCESS;
end;

     接下去按照安装工程的类型,分两种情况:
     1.Basic MSI Project
       a. 在Behavior and Logic-->Custom Action and Sequences-->Cutom Action右键,new InstallShield,名字改为CheckOldVersion


       b. Function Name选择我们刚创建的函数


       c.Custom Action and Sequences-->Sequences-->Installtion-->User Interface右键-->Insert,选择我们刚新建的Cutom Action(CheckOldVersion)


     2.InstallScript Project
     InstallScript Project中只要在OnFirstUIBefore中的Dlg_Start中插入以上代码就可以了:


当然InstallScript Project也可以使用1的方法来实现版本的检查。


附:把一个Basic MSI Project转为InstallScript Project:
      Project-->Project Converters-->Convert to InstallScript Project.

 

转载于:https://www.cnblogs.com/lypkiller/archive/2012/08/23/2652402.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值