Implementing Uninstall Feedback in InnoSetup

Filed under:  — 

If user is uninstalling your application, it is reasonable to ask him what he did not liked in the application. Usually developers open web browser for submission of feedback.

IMHO this is not a good practise — most users do not like applications opening web browser without their confirmation. I consider it is a lot better to implement sending of such kind of feedback using desktop's regular mail application, such as Outlook and Thunderbird.

For example, this is IndieVolume Uninstall Feedback window:

 

 

And, here is InnoSetup pascal code I have developed to implement above window:

function UninstallFeedback(): Boolean; var   Form: TSetupForm;   FeedbackLabel0: TLabel;   FeedbackLabel: TLabel;   OKButton, CancelButton: TButton;   FeedbackMemo: TMemo;   Feedback: String;   Url: String;   ErrorCode: Integer; begin      Result := false;   Form := CreateCustomForm();   try     SetSystemFont(Form.Font);     Form.ClientWidth := ScaleX(350);     Form.ClientHeight := ScaleY(10+23 +10+46 +10+23 +10+23+10 + 23);     Form.Caption := 'IndieVolume Uninstall Feedback';     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 + 20);     OKButton.Top := Form.ClientHeight - ScaleY(23 + 10);     OKButton.Caption := 'Send';     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 + 20);     CancelButton.Top := Form.ClientHeight - ScaleY(23 + 10);     CancelButton.Caption := 'Cancel';     CancelButton.ModalResult := mrCancel;     CancelButton.Cancel := True;     FeedbackMemo := TMemo.Create(Form);     FeedbackMemo.Parent := Form;     FeedbackMemo.Width := Form.ClientWidth - ScaleX(30 + 20);     FeedbackMemo.Height := ScaleY(61);     FeedbackMemo.Left := ScaleX(30);     FeedbackMemo.Top := Form.ClientHeight - ScaleY(23 + 10 + 10) - FeedbackMemo.Height;         FeedbackLabel0 := TLabel.Create(Form);     FeedbackLabel0.Parent := Form;     FeedbackLabel0.AutoSize := False;     FeedbackLabel0.Left := ScaleX(30);     FeedbackLabel0.Top := ScaleY(10);     FeedbackLabel0.Width := Form.ClientWidth - ScaleX(30 + 20);     FeedbackLabel0.Height := ScaleY(42);     FeedbackLabel0.WordWrap := True;     FeedbackLabel0.Caption := 'We regret you have uninstalled IndieVolume. ' +         'To help us with future versions of IndieVolume, ' +         'we want to know about any troubles or difficulties ' +         'you have experienced while using IndieVolume.';         FeedbackLabel := TLabel.Create(Form);     FeedbackLabel.Parent := Form;     FeedbackLabel.Left := ScaleX(30);     FeedbackLabel.Top := ScaleY(10+42+10);        FeedbackLabel.AutoSize := True;     FeedbackLabel.Height := ScaleY(21);     FeedbackLabel.Caption := 'Please let us know...';     FeedbackLabel.FocusControl := FeedbackMemo;         Form.ActiveControl := FeedbackMemo;     if Form.ShowModal() = mrOk then     begin       Feedback := Trim(FeedbackMemo.Lines.Text);       if Feedback <> '' then       begin         StringChange(Feedback, '&amp;', '%26');         StringChange(Feedback, #13#10, '%0A');         StringChange(Feedback, #13, '%0A');         StringChange(Feedback, #10, '%0D');         Url := 'mailto:support@gerixsoft.com?Subject=' +             'IndieVolume%20Uninstall%20Feedback&amp;Body=' + Feedback;         ShellExec('open', Url, '', '', SW_SHOW, ewNoWait, ErrorCode);       end;     end;   finally     Form.Free();   end; end; procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); var   WindowNumber: HWND; var   RegDir: String; begin   if CurUninstallStep = usUninstall then   begin     UninstallFeedback();   end; end;

Trackbacks for this post

No trackbacks exist yet. Be the first to comment on this post!

» Trackback URL for this post is http://www.gerixsoft.com/trackback/11

Comments for this post

No comments exist yet. Be the first to comment on this post!

» Comment form for this post is here