Inno Setup 安装前卸载原程序

Inno Setup 安装前卸载原程序

分类: Install Setup 2013-02-02 15:53 2315人阅读 评论(0) 收藏 举报

很多時候我們需要在安裝文件之前卸載原有的程序而不是覆蓋安裝,本文的code就是實現了這樣的功能。

實現原理是:從注冊表‘UninstallString‘項中讀取卸載信息,用Exec進行靜默卸載。

下面code中APP_NAME為你的程序名,可以去注冊表中確認。

 1 function InitializeSetup(): boolean;
 2 var
 3 ResultStr: String;
 4 ResultCode: Integer;
 5 begin
 6 if RegQueryStringValue(HKLM, ‘SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\APP_NAME_is1‘, ‘UninstallString‘, ResultStr) then
 7 begin
 8 ResultStr := RemoveQuotes(ResultStr);
 9 Exec(ResultStr, ‘/silent‘, ‘‘, SW_HIDE, ewWaitUntilTerminated, ResultCode);
10 end;
11 result := true;
12 end;
时间: 2024-10-29 19:08:19

Inno Setup 安装前卸载原程序的相关文章

Inno Setup 安装、卸载前检测进程或服务

[转载]Inno Setup 安装.卸载前检测进程或服务 (2015-04-24 17:37:20) 转载▼ 标签: 转载   原文地址:Inno Setup 安装.卸载前检测进程或服务作者:一去丶二三里 在用Inno打包期间遇到了一些小问题,在这里总结一下: Inno.iss部分内容如下: 1.32位程序的PSVince.dll插件方法. [Files] Source: psvince.dll; Flags: dontcopy [Code] function IsModuleLoaded(mo

inno setup 安装前判断进程是否存在,以及停止相应进程<转>

打包的时候遇到了这样的需求:假似用户都是傻瓜                  式操作,如果更新安装程序的时候,之前的老程序还在运行这个时候如果你去提示让用户吧老程序手动退掉也不现实. 所以当遇到这种情况的时候能不能在更新安装程序上下手,在更新的时候就默认吧老程序杀掉(如果老程序在运行). 答案是明确的inno setup 是可以这样的操作. 下面是转的文章,谢谢作者的分享. ============================================================

Inno Setup安装、卸载时判断是否程序正在运行

var ErrorCode: Integer; IsRunning: Integer; // 安装时判断客户端是否正在运行 function InitializeSetup(): Boolean; begin Result :=true; //安装程序继续 IsRunning:=FindWindowByWindowName('E家人客户端'); while IsRunning<>0 do begin if Msgbox('安装程序检测到客户端正在运行.' #13#13 '您必须先关闭它然后单击

一个比较完整的Inno Setup 安装脚本

一个比较完整的Inno Setup 安装脚本,增加了对ini文件设置的功能,一个安装包常用的功能都具备了. 1 [Setup] 2 ; 注: AppId的值为单独标识该应用程序. 3 ; 不要为其他安装程序使用相同的AppId值. 4 ; (生成新的GUID,点击 工具|在IDE中生成GUID.) 5 AppId={{A9861883-31C5-4324-BD9A-DC3271EEB675} 6 ;程序名 7 AppName=ISsample 8 ;版本号 9 AppVerName=ISsamp

一个比较完整的Inno Setup 安装脚本(转)

一个比较完整的Inno Setup 安装脚本,增加了对ini文件设置的功能,一个安装包常用的功能都具备了.   [Setup] ; 注: AppId的值为单独标识该应用程序. ; 不要为其他安装程序使用相同的AppId值. ; (生成新的GUID,点击 工具|在IDE中生成GUID.) AppId={{A9861883-31C5-4324-BD9A-DC3271EEB675} ;程序名 AppName=ISsample ;版本号 AppVerName=ISsample 1.0.0.0 ;发布者名

Advanced Installer 安装前卸载旧版本的办法

原文:Advanced Installer 安装前卸载旧版本的办法 Advanced Installer这个工具百度出来的资料太少了. 在我们平常打包的工作中,经常遇到的一个问题是,如何能在安装新版本的时候友好的提示/卸载之前的旧版本,而不是粗暴的直接让用户自行去卸载呢?今天就这个问题给出下面一个具体的解决办法,话不多说,直接开始: 方案一:安装时自动卸载旧版本 第一步:找到并记录下上一个版本的Upgrade Code,此Code在上一个工程中的如下位置: 第二步:在新版本中的Upgrade C

Inno Setup安装程序单例运行

1.缘起: KV项目下载底层升级包,老是报出升级文件占用问题,反复分析,不得其所. 今天突然发现同时启动多个升级程序实例,分析认为安装包同时被调用多次,导致实例访问文件冲突,导致此问题. 安装程序由Inno Setup制作,遂找其解决方案,最先想到的是互斥体,就由此开始! 2.AppMutex [Setup] AppMutex=MyAppMutex 安装程序Setup段,此互斥变量,会在安装程序启动时检测是否有此互斥体的程序在运行,若有则提示: 通常,在程序中置同名互斥体,此入判断,可避免程序在

安装和卸载windows程序

安装windows service通常有两种工具 1.Framework目录下的installutil.exe工具.2.visual studio命令行工具 在这里我要说的是当我们使用的系统是64位的系统,Framework包含1.0,2.0,3.0,3.5,4.0以及它们的64位版本时的情况. 一.使用installutil.exe 使用Visual Studio 2010创建的基于x86的4.0应用程序,在使用 installutil.exe工具安装时,你会发现在Microsoft.NET目

Inno Setup入门(七)&mdash;&mdash;提供安装语言选项

Inno Setup安装目录下有一个Languages的文件夹,该文件夹提供了可供使用的语言,通过在脚本中加入[languages]段,可以实现该项功能,实现代码如下: [setup] ;全局设置,本段必须 AppName=Test AppVerName=TEST DefaultDirName="E:\TEST" AppVersion=1.0 Compression=lzma2/max ShowLanguageDialog=yes [languages] Name: "en&