读书人

InnoSetup 检测程序是否安装解决方法

发布时间: 2012-05-28 17:59:33 作者: rapoo

InnoSetup 检测程序是否安装
请问InnoSetup怎样检测程序已安装,如果安装执行原程序卸载后再进行安装,无安装则直接安装?

[解决办法]
没有用到你这么深入,最多就是检测一下程序在运行没有,在运行则提示,知道没有运行为止,然后覆盖。
你说的这些就只有自己来判断了,你可以给以前安装过的用户在注册表某个位子做个标记,安装的时候就先检查一下吧。
[解决办法]
友情帮顶
[解决办法]
个人觉得你可以设置一个标志,比如注册表特定的位置写一个项,设置一个值,读到这个值就代表程序安装了,否则认为没安装
[解决办法]
用Inno Setup 的确可以实现楼主的要求,不过,比实现快捷方式之类的方法要麻烦一点点
具体就是用InnoSetup读写注册表,加入Delphi脚本实现你定制的functions
在代码中加入下面的部分(下面第三行的'2.0' 就是标识你当前版本的,根据你的情况改一下):
我调试过了,成功!

[Registry]
Root: HKLM; Subkey: Software\The Application; ValueType: string; ValueName: Installed version; ValueData: '2.0'; Flags: uninsdeletekey

[Code]
function GetInstalledVersion(): String;
var
InstalledVersion: String;
begin
InstalledVersion :='';
RegQueryStringValue(HKLM, 'Software\The Application', 'Installed version', InstalledVersion);
Result := InstalledVersion;
end;

function InitializeSetup(): Boolean;
var
PrevVer: String;
begin
PrevVer := GetInstalledVersion();
result := true;
if length(PrevVer) > 0 then begin
//如果发现程序已经安装过了
MsgBox ('本程序的 ' + PrevVer + ' 版本已经安装,请卸载后再安装本程序. 安装程序将关闭.', mbError, MB_OK);
result := false;
end;
end;



[解决办法]
你安装的时候,需要规定一个标记,然后写安装脚本的时候抓取这个标记,如果有抓取到,就说明已经安装,否则没有安装
[解决办法]
好像可以插入一段函数

function InitializeSetup(): Boolean;
begin

end;

具体的在网上查查
[解决办法]
inno Setup本身好像就有这么一个标记
如果你安装过以后下次安装时他自己就能识别出来
如果你要自己读取这个标识,不知道该怎么用

读书人网 >.NET

热点推荐