Получение номера версии файла в разделе [Registry] - PullRequest
1 голос
/ 06 октября 2011

Я создаю установщик для визуального студийного проекта с использованием inno setup.Я получаю сообщение об ошибке для

"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 будет обновляться автоматически, но я создаю значки с их именем и номером версии.Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 06 октября 2011

Проблема, с которой вы сталкиваетесь, состоит в том, что для вызова функции в качестве параметра в основных разделах InnoSetup вам необходимо использовать конструкцию {code:}.
Вот пример, который мне помог:

[Registry]
Root: HKCU; Subkey: "Software\MyCompany\Product"; ValueType: DWORD ; ValueName: "Version" ;     ValueData: {code:GetVersion|{#MyAppVersion}}; Flags: uninsdeletekey;
2 голосов
/ 06 октября 2011

Как сказал @Ken White, ваша константа "сломана", что делает всю строку буквальной недопустимой. Даже тогда, вы ValueData по-прежнему просто GetVersion(WhateverMyAppVersionIs) вместо, если результат этой функции. Для этого используйте константу {code:} для вызова GetVersion.

...