博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
InstallShield 工程类型installscript,如何覆盖安装?
阅读量:5773 次
发布时间:2019-06-18

本文共 2925 字,大约阅读时间需要 9 分钟。

原文

开始使用的msi工程类型。网上找了资料, 在kevin的博客里找到这条方法 可以通过删除Execute Sequence中的RegisterProduct和PublishProduct两个CA实现同样的需求

试过之后确实是可以 重复安装的,但是 开始菜单的中的卸载是无法卸载的,而且控制面板是不能显示该程序的。所以此方法不可行。

换了个工程类型,使用 installscript工程类型,此类型的 脚本中 advanced下面有个 OnShowUI,即存放的检测是已安装、更新、还是第一次安装 的脚本,修改逻辑第一安装外的情况 继续执行 安装脚本 

在 卸载的快捷方式中添加一个参数 -removeonly,检测判断此参数为卸载功能。

修改代码如下: 

 

function OnShowUI()BOOL    bMaintenanceMode, bUpdateMode;string    szIgnore, szTitle;begin                // Enable dialog caching        Enable( DIALOGCACHE );                // Determine what events to show.        bUpdateMode    = FALSE;        bMaintenanceMode = FALSE;            // Remove this to disabled update mode.        if( UPDATEMODE ) then            bUpdateMode = TRUE;        endif;        // Remove this to disable maintenance mode.        if ( MAINTENANCE ) then            bMaintenanceMode = TRUE;                  endif;        // Show appropriate UI        // TODO: Enable if you want to enable background etc.        //if ( LoadStringFromStringTable( "TITLE_MAIN", szTitle ) < ISERR_SUCCESS ) then // Load the title string.        //    szTitle = IFX_SETUP_TITLE;        //endif;        //SetTitle( szTitle, 24, WHITE );        //Enable( FULLWINDOWMODE );                                   //Enable( BACKGROUND );        //SetColor( BACKGROUND, RGB( 0, 128, 128 ) );                    /*if( bUpdateMode ) then            OnUpdateUIBefore();        else            if ( bMaintenanceMode ) then                OnMaintUIBefore();            else                OnFirstUIBefore();            endif;        endif; */            // OnFirstUIBefore();                if( REMOVEONLY )   then               //    MessageBox ("卸载", SEVERE);                OnMaintUIBefore();         else                           if( bUpdateMode ) then                //    MessageBox ("更新", SEVERE);                OnUpdateUIBefore();             else                   if ( bMaintenanceMode ) then                                           if( MessageBox( "您已安装最新版本,是否覆盖安装?" , MB_YESNO ) != IDYES ) then                        abort;                    endif;                                            OnFirstUIBefore();                         FeatureReinstall();                 else                //    MessageBox ("第一次安装", SEVERE);                                       OnFirstUIBefore();                 endif;             endif;         endif;        // Move Data        OnMoveData();                 //OnFirstUIAfter();          if( REMOVEONLY )   then                OnMaintUIAfter();        else                            OnFirstUIAfter();                    endif;            /*            if( bUpdateMode ) then            OnUpdateUIAfter();        else            if ( bMaintenanceMode ) then                OnMaintUIAfter();            else                OnFirstUIAfter();            endif;        endif;        */        // Disable dialog caching        Disable(DIALOGCACHE);end;

转载地址:http://hqxux.baihongyu.com/

你可能感兴趣的文章
基于干净语言和好奇心的敏捷指导
查看>>
Node.js 2017企业用户调查结果发布
查看>>
“软”苹果水逆的一周:杂志服务崩溃,新机型遭泄露,芯片首架离职
查看>>
JAVA的优势就是劣势啊!
查看>>
ELK实战之logstash部署及基本语法
查看>>
帧中继环境下ospf的使用(点到点模式)
查看>>
BeanShell变量和方法的作用域
查看>>
LINUX下防恶意扫描软件PortSentry
查看>>
由数据库对sql的执行说JDBC的Statement和PreparedStatement
查看>>
springmvc+swagger2
查看>>
软件评测-信息安全-应用安全-资源控制-用户登录限制(上)
查看>>
cacti集成
查看>>
Android中的Cursor
查看>>
我的友情链接
查看>>
Java Web Application 自架构 一 注解化配置
查看>>
如何 debug Proxy.pac文件
查看>>
Python 学习笔记 - 面向对象(特殊成员)
查看>>
Kubernetes 1.11 手动安装并启用ipvs
查看>>
Puppet 配置管理工具安装
查看>>
Bug多,也别乱来,别被Bug主导了开发
查看>>