read more »
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, '&', '%26'); StringChange(Feedback, #13#10, '%0A'); StringChange(Feedback, #13, '%0A'); StringChange(Feedback, #10, '%0D'); Url := 'mailto:support@gerixsoft.com?Subject=' + 'IndieVolume%20Uninstall%20Feedback&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;
Comments for this post
No comments exist yet. Be the first to comment on this post!