获取[注册表]部分中的文件版本号
我正在使用inno setup为Visual Studio项目创建安装程序。我正在一个错误获取[注册表]部分中的文件版本号
"Parameter ValueData has invalid value"
此代码:
[Code]
function GetVersion(AppVersion: String): String;
var
Version: String;
CharIndex: integer;
c: char;
begin
for CharIndex := 1 to Length(AppVersion) do begin
c := AppVersion[CharIndex];
if (c <> '.') then
Version := Version + c;
end;
Result := Version;
end;
[Registry]
Root: HKCU; Subkey: "MyCompany\Product"; ValueType: DWORD ; ValueName: "Version" ; ValueData: GetVersion({#MyAppVersion}); Flags: uninsdeletekey;
我的版本是这样 “1.0.0.3,1.0.0.4,等等”。所以这个程序删除。并将它们连接起来形成一个数字,然后回传给注册表。所以,我可以检查此注册表值并卸载或更新以前的版本。我听到有人说inno会自动升级,但我用他们的名字创建了带有版本号的图标。提前致谢。
您所看到的问题是因为要将函数作为InnoSetup主要部分中的参数调用,您需要使用{code:}构造。
这里是为我工作的例子:
[Registry]
Root: HKCU; Subkey: "Software\MyCompany\Product"; ValueType: DWORD ; ValueName: "Version" ; ValueData: {code:GetVersion|{#MyAppVersion}}; Flags: uninsdeletekey;
谢谢,这工作。 – Vikyboss
正如@Ken White所说,你的常量是“破碎的”,这使得整个字符串文字无效。 即便如此,你的ValueData仍然只是GetVersion(WhateverMyAppVersionIs)
而不是如果该函数的结果。 为此,请使用{code:}
常量调用GetVersion。
谢谢。这有帮助。 – Vikyboss
的'{#MyAppVersion]'可能是问题,但你没有提供它。 (默认是'AppVersion',不带'My'前缀。) –