关于Innosetup 打包安装时读取上一次安装路径的问题网上也有挺多的文章,基本的思路就是安装时向注册表写安装路径,下次安装时从注册表读取上一次安装路径,方法如下:
[Registry]
Root:HKLM;Subkey:"Software\Myprogrom";Flags:uninsdeletekeyifempty
Root:HKLM;Subkey:"Software\Myprogrom";ValueType:string;ValueName:"InstallPath";ValueData:"{app}";Flags:uninsdeletekey
【code】
function GetDirName(Value: string): string;
var
InstallPath: string;
begin
Result := ExpandConstant('{pf}\Myprogrom');//默认
if RegQueryStringValue(HKLM, 'SOFTWARE\Myprogrom', '', InstallPath) then //注册表如果有 则读取
Result := InstallPath;
end;
但是,有几点需要注意:
1.如果需求是每次安装前先卸载上一个版本的话,上面这个方法是获取不到路径的,因为卸载时注册表的值会被删除。那怎么办呢?思路就是卸载前获取到注册表的路径并记录下来。具体来说就是