2010-03-05 4 views
2

Я делаю установщик с помощью Inno Setup. Я хочу защитить пароль от удаления. Поэтому мой план - попросить пароль для удаления во время установки и сохранить его в файл. При деинсталляции попросите пароль у пользователя и сравните пароли.Удаление паролем с помощью Inno Setup

Я не мог найти способ, чтобы пользователь мог ввести пароль при удалении, есть ли какие-либо?

ответ

1

Защита паролем не работает, так как пользователь может просто вручную удалить ваши файлы. Это означает, что в Inno Setup нет встроенного опциона для этого.

Если вы хотите это сделать, вы можете использовать функцию события InitializeUninstall, чтобы спросить пользователя о пароле и вернуть False на несоответствие. Это приведет к отмене удаления.

+0

Я не мог найти способ, чтобы пользователь мог ввести пароль во время удаления (я пытался использовать CreateInputQueryPage но он дает ошибку) .Как взять вход от пользователя при удалении? – Navaneeth

-1

Вы можете проверить функцию «CheckPassword» в справке Inno Setup.

+0

«CheckPassword» используется только в установщике, а не в деинсталляторе. –

1

Некоторые пользователи Inno Setup требуют, чтобы пользователь, который хочет удалить программное обеспечение, попросил пароль, прежде чем это станет возможным. Например, антивирусное программное обеспечение может быть кандидатом на это требование. В приведенном ниже коде показано, как создать форму, запросить пароль и удалить программное обеспечение только в том случае, если пароль верен. Этот метод очень слаб, легко узнать пароль. Таким образом, кто-то, кто хочет использовать эту стратегию для защиты своего программного обеспечения от удаления, должен кодировать что-то более безопасное. Если пользователь хочет удалить и не знает, что файлы паролей могут быть удалены в любом случае из папки приложения. В этом примере пароль для удаления - removeeme.

[Setup] 
AppName=UninsPassword 
AppVerName=UninsPassword 
DisableProgramGroupPage=true 
DisableStartupPrompt=true 
DefaultDirName={pf}\UninsPassword 

[Code] 
function AskPassword(): Boolean; 
var 
    Form: TSetupForm; 
    OKButton, CancelButton: TButton; 
    PwdEdit: TPasswordEdit; 
begin 
    Result := false; 
    Form := CreateCustomForm(); 
    try 
    Form.ClientWidth := ScaleX(256); 
    Form.ClientHeight := ScaleY(100); 
    Form.Caption := 'Uninstall Password'; 
    Form.BorderIcons := [biSystemMenu]; 
    Form.BorderStyle := bsDialog; 
    Form.Center; 

    OKButton := TButton.Create(Form); 
    OKButton.Parent := Form; 
    OKButton.Width := ScaleX(75); 
    OKButton.Height := ScaleY(23); 
    OKButton.Left := Form.ClientWidth - ScaleX(75 + 6 + 75 + 50); 
    OKButton.Top := Form.ClientHeight - ScaleY(23 + 10); 
    OKButton.Caption := 'OK'; 
    OKButton.ModalResult := mrOk; 
    OKButton.Default := true; 

    CancelButton := TButton.Create(Form); 
    CancelButton.Parent := Form; 
    CancelButton.Width := ScaleX(75); 
    CancelButton.Height := ScaleY(23); 
    CancelButton.Left := Form.ClientWidth - ScaleX(75 + 50); 
    CancelButton.Top := Form.ClientHeight - ScaleY(23 + 10); 
    CancelButton.Caption := 'Cancel'; 
    CancelButton.ModalResult := mrCancel; 
    CancelButton.Cancel := True; 

    PwdEdit := TPasswordEdit.Create(Form); 
    PwdEdit.Parent := Form; 
    PwdEdit.Width := ScaleX(210); 
    PwdEdit.Height := ScaleY(23); 
    PwdEdit.Left := ScaleX(23); 
    PwdEdit.Top := ScaleY(23); 

    Form.ActiveControl := PwdEdit; 

    if Form.ShowModal() = mrOk then 
    begin 
     Result := PwdEdit.Text = 'removeme'; 
     if not Result then 
      MsgBox('Password incorrect: Uninstallation prohibited.', mbInformation, MB_OK); 
    end; 
    finally 
    Form.Free(); 
    end; 
end; 


function InitializeUninstall(): Boolean; 
begin 
    Result := AskPassword(); 
end; 

. Источник: http://www.vincenzo.net/isxkb/index.php?title=Require_an_uninstallation_password

Смежные вопросы