InstallShield 工程类型installscript,如何覆盖安装?

原文 http://www.cnblogs.com/daocaorenbx/p/3305162.html

开始使用的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;
时间: 2024-09-22 06:52:15

InstallShield 工程类型installscript,如何覆盖安装?的相关文章

Install shield Project file format修改之后,覆盖安装就失败了

问题描述 我们的InstallShield工程的projectfileformat之前一直设置的是binary格式,后来手动改成了xml格式之后,就发现新出的版本覆盖安装到老的版本就出错了.覆盖安装本身能够正常结束,但是把程序运行起来的时候会提示跟安装有关的错误信息.我们覆盖安装的原理是卸载旧版本再安装新版本.哪位高人能够指点下迷津,怎么解决这个问题啊.先谢过了.

InstallShield 工程类型MSI 使用过程中碰到的问题及解决方法。

原文 http://www.cnblogs.com/daocaorenbx/p/InstallShield.html 一.安装完 桌面创建IE快捷方式: 1.  install script可以直接建internet快捷方式. 2.  basic msi 要先在desktop随便创建一个快捷方式, 修改Target和Arguments两项.将Target 的内容改为[ProgramFilesFolder]Internet Explorer\IEXPLORE.EXE,即将快捷方式指向IE,然后将A

教你除掉覆盖安装Win 7留下的启动菜单

问:最近我安装了Windows 7,是覆盖安装的,没有格式化C盘,安装程序提示保留原来的系统为一个文件夹,但不能登录原来的系统!我把那个文件夹删了,释放了硬盘空间.但现在每次系统登录界面都要选择系统进入,一个是Windows 7,一个是原来的系统.怎样去除启动菜单直接进入Windows 7呢? 答:要解决这个问题,有两种途径.分别是图形界面方法和命令行方法. 图形界面方法:依次点击"开始→运行",输入msconfig并确定,在 Boot 标签中可以修改启动菜单的选项. 命令行方法:用&

百度杀毒可以覆盖安装吗

  百度杀毒如果已经安装了较旧版本的百度杀毒软件将直接覆盖已安装的软件.如果已经安装了最新版本的百度杀毒软件,再次安装时,百度杀毒将提醒是否要覆盖安装.如果选择是,则按照软件提示安装步骤,进行覆盖安装.

覆盖安装Win7系统后需要做的一些善后工作

当用户覆盖安装Win7 32位旗舰版系统时,没有C盘格式化,安装程序就会提示用户保留原来的系统为一个文件夹,但安装完成是不能登录之前那个系统的.但是每次登录系统界面时,都是会出现两个系统供用户选择系统进入,一个是Windows7系统,一个是原来的Win7 32位旗舰版系统,把原来的系统所在文件夹删掉后问题仍旧,怎么办呢? 方法一.图形界面方法 依次点击"开始→运行",在运行窗口中输入msconfig命令并按确定,在Boot标签中可以修改启动菜单的选项. 方法二.命令行法 使用"

bin debug-使用installshield limited 制作安装包 安装后 程序中图片打不开

问题描述 使用installshield limited 制作安装包 安装后 程序中图片打不开 程序中图片都放在了bin/debug中,因为以前没用过installshield limited 打包,结果这些图片没能放进安装包中,请问应怎样将bin/debug中的图片一起打进安装包中,谢谢啦!

centos 覆盖安装-关于centOS安装遇到的问题

问题描述 关于centOS安装遇到的问题 我原本在个人计算机上安装了win7和Ubuntu,今天我想在ubuntu分区重新安装centOS,安装成功之后,我想继续熟悉安装过程,就继续想用原来的centOS安装光盘重新覆盖安装已经存在的centOS系统,可是这次怎么也安装不上,警告提示安装光盘里找不到镜像文件,所以根本就进入不了安装界面.我也感觉自己没事儿找事,不过我是真的想了解.学习linux系统,还望各路大神指教啊!! 解决方案 分区已经达到4个主分区的原因?

vs2012自带打包覆盖安装问题

问题描述 覆盖安装需要设置removepreviousversions为何找了很多地方都找不到这个属性,哪位大神知道在哪的截张看看.感激不尽,急急急...

android应用运行时覆盖安装。

问题描述 android应用运行时覆盖安装. 我的程序里面有自定义的application,也把app添加到manifest里了. 程序使用百度推送.分享. 应用最低版本号为10也就是2.3.3. 测试时使用一个2.3的三星没有问题. 但是使用4.0的小米.魅族.酷派,三台手机就会出现一个logcat捕捉不到的错误.这个错误只在运行时,覆盖安装才会出现,而且不影响应用使用.且只会出现一次.安装完成后就不会出现了.