Мне нужен раздел [InstallDelete]
, чтобы вызвать пользовательскую функцию, которая будет проверять, установлена ли старая версия (в этом случае определенные файлы необходимо удалить перед установкой новой версии).Функция Inno Setup не называется
Извлечение из моего сценария установки Inno. Сначала функция, возвращающая True, если установлена более старая версия.
[Code]
function deleteExistingHhd: Boolean;
var Version: String;
begin
MsgBox('Checking for key:'+'Software\Microsoft\Windows\CurrentVersion\Uninstall\'+ExpandConstant('AppId')+'_is1', mbInformation, MB_OK);
if RegValueExists(HKEY_LOCAL_MACHINE,'Software\Microsoft\Windows\CurrentVersion\Uninstall\'+ExpandConstant('AppId')+'_is1', 'DisplayVersion') then
begin
RegQueryStringValue(HKEY_LOCAL_MACHINE,'Software\Microsoft\Windows\CurrentVersion\Uninstall\'+ExpandConstant('AppId')+'_is1', 'DisplayVersion', Version);
MsgBox('Existing version:'+Version+' New version:'+ExpandConstant('AppVersion'), mbInformation, MB_OK);
if (Version < '1.013') then
begin
Result := True;
end
else
begin
Result := False;
end
end
else
begin
Result := False;
end
end;
Затем раздел, который должен вызвать эту функцию:
[InstallDelete]
Type: files; Name: {userappdata}\xxx\*.hhd; Check:deleteExistingHhd;
К сожалению, генерируемая установка, кажется, никогда не вызывать пользовательскую функцию (при установке моей программы с этой установкой я никогда не получите MsgBox, расположенной в пользовательская функция и файлы не удаляются).
Возможно ли, что моя функция имеет некоторые ошибки, которые не указаны при компиляции Inno Setup? Если да, где я могу их найти?
Любая помощь/подсказка была бы очень оценена; благодаря!
я, что вы ** Ошибка ** в ** ExpandConstant ('APPID') ** и ** ExpandConstant ('AppVersion') ** – IZB
Спасибо, но это не ошибка: мне нужно найти реестр на основе AppID (GUID). Помимо определения конкретной ошибки здесь более общий вопрос: где я могу найти журнал ошибок, который указывает, откуда происходит ошибка? – Tom
Я имею в виду, что код не работает, потому что ** ExpandConstant ('AppId') ** он не дает вам AppId (GUID).если вы хотите это сделать, вы можете использовать ** # define AppId SetupSetting ('AppId') ** и называть его с помощью ** ExpandConstant ('{# AppId}') ** – IZB