比如我给客户装了一个软件是1.0的,那么我软件升级后给客户装的时候安装程序自动找到原来的安装目录然后进行更新安装
解决方案 »
- 我想做一个简单的程序更新?
- 新年新气象-------------------------------散分(来着都有分,下周一结贴)
- To dbgrid的单元格(向高手求救啊)
- 怎样动态设置屏幕分辨率?
- 请问各界高手
- 很奇怪的问题,有人发现过吗?
- 请问怎样创建一个image的控件数组,并且动态的分配这些image的颜色呢?
- 用delphi怎样做一个relaese版本的程序??
- 关于 From DB2 To Oracle 的数据转换问题(相关;序列),求教!(只让给20分不好意思!)
- 怎么将image存进list里面
- 请问大家,使用VCL组件 delphi2007的工具栏怎么实现?
- 急聘delphi程序员(深圳)
参考这个
procedure InitializeWizard();
var ResultStr: String;
ResultCode: Integer;
begin
if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\你的程序名_is1', 'UninstallString', ResultStr) then
begin
ResultStr := RemoveQuotes(ResultStr);
Exec(ResultStr, '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
end;
end;
code.google.com/p/lextudio楼上的代码只考虑了默认的情况。实际上如果设置了GUID的话,“你的程序名”这个地方就是GUID了。其实Inno默认的行为就是新的安装包会覆盖安装之前的版本(当然还有几个前提条件),其实不需要手工卸载的。我之所以在自己的项目里面像楼上一样调用卸载,是为了清理.NET GAC之类的资源。使用Inno需要你最好建立一个干净的虚拟机镜像来做安装测试。像VMware的话一定要用Snapshot,保证能够倒回最初的样子。很多时候需要反复测试来看Inno的默认行为是怎么样的,怎么来写脚本。不过现在感觉花了时间之后收获还是蛮多的。