我的要求如下;我已从注册表中读取了附加产品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设置编译并显示错误。你能帮我解决这个问题吗?
答案 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
常量中存在一个非常大的空间。