2016-07-02 3 views
0

Мне нужно заставить директиву CreateUninstallRegKey в разделе [Setup] только создать ключ реестра для удаления, если это необходимо.Inno Setup: Создать ключ реестра только при необходимости

Например, если я устанавливаю условие для создания ключа реестра для удаления, его нужно создавать только при условии, что условие выполнено. В противном случае ключ реестра деинсталляции не должен быть создан.

Как это сделать в Inno Setup?

ОБНОВЛЕНО ВОПРОС

Код я написал это:

[Setup] 
CreateUninstallRegKey=RegKeyDeterminer 

[Code] 
function RegKeyDeterminer(): Boolean; 
    begin 
    Result:= ISDoneError = True; 
    if ISDoneError = True then Result:= True; 
end; 

С помощью этого кода ключа реестра Удаление всегда создает. (Это должно быть что-то неправильно в коде, который я написал.)

Удалить ключ реестра не должен, если ISDoneError = True.

Удалить ключ реестра должен быть создан, если ISDoneError = False.

ISDoneError имеет только Истинные или ложные значения. (Это булева функция в ISDone.dll которая является Dynamic Link Library, который используется для извлечения файлов из 7-Zip, RAR, Бинарные и т.д. архивы установки Inno.)

Это условия. Если вы видите ошибки или ошибки установки условий, то исправьте мой код.

Thank you.

+0

* "Если бы я поставил условие" * - в каком состоянии? Можете ли вы привести нам пример, когда вам нужно создать ключ, а когда нет? –

+0

Хорошо, не давая вам мое состояние, я сделал свою работу хуже. См. Мой ОБНОВЛЕННЫЙ ВОПРОС. – GTAVLover

+0

Ваше решение для обработки ошибок выглядит неправильно. Вы не должны позволять установщику даже закончить, когда что-то пойдет не так. Не взламывайте его **, притворяясь **, что установщик не закончил. –

ответ

2

CreateUninstallRegKey directive может принимать boolean expression/function в качестве значения.

Так что просто реализуйте функцию для возврата True, когда вам нужно создать ключ и False иначе.

[Setup] 
CreateUninstallRegKey=CreateKey 

[Code] 

function CreateKey: Boolean; 
begin 
    Result := condition; 
end; 
Смежные вопросы