2010-03-05 4 views
2

Inno Setup을 사용하여 설치 프로그램을 만들고 있습니다. 제거를 암호로 보호하고 싶습니다. 그래서 우리 계획은 설치 중에 제거 암호를 물어 파일에 저장하는 것입니다. 제거하는 동안 사용자에게 암호를 요청하고 암호를 비교하십시오.Inno Setup을 사용하여 비밀번호로 삭제 제거

제거하는 동안 사용자가 비밀번호를 입력하도록하는 방법을 찾을 수 없습니까?

답변

1

사용자가 파일을 수동으로 삭제하기 만하면 비밀번호 제거 제거가 작동하지 않습니다. 이것은 실제로 Inno Setup에 내장 옵션이 없음을 의미합니다.

어쨌든 이것을 시도하려면 InitializeUninstall 이벤트 함수를 사용하여 사용자에게 암호를 묻고 불일치 일 때 False를 반환 할 수 있습니다. 그러면 제거 프로그램이 중단됩니다.

+0

(내가 CreateInputQueryPage을 사용하려고하지만 오류주고 있었다) 괜찮나 입력을하는 방법을 제거하는 동안 사용자로부터? – Navaneeth

-1

Inno 설치 도움말에서 "CheckPassword"기능을 확인할 수 있습니다.

+0

'CheckPassword'는 설치 프로그램에서만 사용되며, 제거 프로그램에서는 사용되지 않습니다. –

1

일부 Inno Setup 사용자는 소프트웨어를 제거하려는 사용자에게이 작업을 수행하기 전에 암호를 묻도록 요청합니다. 예를 들어 바이러스 백신 소프트웨어가이 요구 사항의 후보가 될 수 있습니다. 아래 코드는 양식을 만들고 암호를 묻는 방법과 암호가 정확한 경우에만 소프트웨어를 제거하는 방법을 보여줍니다. 이 방법은 매우 약하며 쉽게 암호를 알아낼 수 있습니다. 따라서이 전략을 사용하여 소프트웨어를 제거하지 못하게하려는 사람은 더 안전한 코드를 작성해야합니다. 사용자가 제거하고 암호 파일을 모르는 경우 응용 프로그램의 폴더에서 파일을 삭제할 수 있습니다. 이 샘플에서 제거 암호는 removeme입니다.

[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

관련 문제