在使用Inno安装程序卸载主设置之前卸载附加设置

时间:2012-01-18 11:00:10

标签: inno-setup

我的要求如下;我已从注册表中读取了附加产品ID,并在卸载主设置之前使用该产品ID卸载了安装程序。 我使用了以下代码

[code]
const
  RegProductLocation = 'SOFTWARE\My Company\My Product\Sample\ {#Version}';
var SamplesProductId : string;
function GetSamplesID(): Boolean;
begin
  if RegQueryStringValue(HKEY_CURRENT_USER, RegProductLocation, 'ProductID', SamplesProductId) then
begin
    Result:= true;
end else begin
Result:= false;   
  end;end;

[UninstallRun] 
Filename: msiexec.exe; Parameters: " /x ""{SamplesProductId}"" /qn"; Check:GetSamplesID();  Flags: runhidden;

它不是由Inno设置编译并显示错误。你能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您需要使用函数和{code:...}常量来访问[Code]

中的数据

像这样(未经测试的航空代码):

[UninstallRun] 
Filename: msiexec.exe; Parameters: "/x ""{code:GetSamplesID}"" /qn"; Check:CheckHasSamplesID(); Flags: runhidden; 

[code]
const
  RegProductLocation = 'SOFTWARE\My Company\My Product\Sample\{#Version}';
var
  SamplesProductId : string;

function CheckHasSamplesID(): Boolean;
begin
  if RegQueryStringValue(HKEY_CURRENT_USER, RegProductLocation, 'ProductID', SamplesProductId) then begin
    Result:= true;
  end else begin
    Result:= false;   
  end;
end;

function GetSamplesID(Param: String): String;
begin
  Result:= SamplesProductId;
end;

请注意,RegProductLocation常量中存在一个非常大的空间。