You are here: Home » Raz-Soft News » [ En ] » Uninstall Survey for Inno Setup

Uninstall Survey for Inno Setup

28 May |

  With Uninstall Survey (IssSurvey.dll extension) for Inno Setup you can get users feedback / comments / uninstall reasons by presenting a quick survey when your product is about to be uninstalled. It is true that most of the users will click right past it, but a small number will give you some feedback that maybe will help you improve the product. You may not get a lot of quality information with uninstall survey, but you may well find one “gem” that will make a big difference in sales/quality – something your software maybe is missing, for example.


  • easy to use
  • small size (only 25KB)


  • multi-language support (text infos and reasons template are fully customizable)
  • user feedback it is sent by a POST to a php script on the application/publisher home page. A user name and password can also be sent for more security. (php scripts examples included)
  • what to do with the user feedback is up to you. You can either make the php script to send the comments/feedback in your mail inbox or save it in a local file on your server or in a database.
  • uses the standard Windows Internet API (wininet.dll) for internet connection meaning that there is no need for a proxy configuration as long as IE (Internet Explorer) is configured
  • 100% free

How do I get it to work with Inno?
1. Download Uninstall Survey for Inno Setup (IssSurvey.dll and Inno script demo with server side scripts included in the download package)
2. Add the extension (IssSurvey.dll) in your [Files] section script along with the language file (IssSurvey.ini) if you need to customize default survey text:

    ;------ Copy Survey Extension (IssSurvey.dll) in your app install folder to use it on unistall
    Source: IssSurvey.dll; DestDir: {app}
    ;------ Copy Survey Extension Language File (IssSurvey.ini) in your app install folder
    Source: IssSurvey.ini; DestDir: {app}

3. Add below code in your [Code] section script (you ca modify it as you like):

    // IssSurvey function called on uninstall
    function IssSurvey(Language: PChar; ReasonsList: PChar; Server: PChar; UserName: PChar; Password: PChar): Integer;
    external '[email protected]{app}\IssSurvey.dll stdcall uninstallonly';

    // IssSurvey function returns: 0 if the user has submited the comments; 1 if cancel or close pressed; 2 if ignore/skip pressed; -1 if an error occured
    //  Language    = IssSurvey language dialog. Set this value to empty '' and default english will be used
    //                ( see and include IssSurvey.ini if you need custom text or other language)
    //  ReasonsList  = Uninstall reasons templates list. Separate multiple reasons with semicolon.
    //                 Set this value to empty string '' to hide the template reasons combo box and show only the edit box
    //  Server      = Full http path to a php script. The IssSurvey will POST at this adresss the selected uninstall reason and any user feedback/comments.
    //                Ex: ''
    //                Informations posted when the user submits the survey from IssSurvey Extension:
    //                $name      = the name you pass on the IssSurvey Extension function     (for security purpose)
    //                $pass      = the password you pass on the IssSurvey Extension function (for security purpose)
    //                $cntinfo   = the user reason/comments/feedback. !!Warning: the sent text is base64 encoded.
    //                $IssSurvey = just for a check control. It will be set to 1 by IssSurvey Extension
    //  UserName   =  a user name to submit along with the reason/comments  (for security purpose)
    //  Password   =  a password to submit along with the reason/comments  (for security purpose)

    function InitializeUninstall(): Boolean;
      sReasons: String;
      nCode: Integer;  { 0 if the user has submited the comments; 1 if cancel or close pressed; 2 if ignore/skip pressed; -1 if an error occured }

         Result   := false;
         sReasons := 'I do not understand how to use this product;I like the product but do not want to pay for it;I was bothered by the sponsored links;Other reason (see below):';
         nCode    := IssSurvey('en',sReasons,'','demo','demo');

         if (nCode=0) or (nCode=2) then begin                    { submited or ignored }
              Result := true;                                    { continue uninstall setup      }

        // Unload the extension, otherwise it will not be deleted by the uninstaller


4. Set sReasons from the above code with your own reasons list (separate multiple reasons with semicolon). If sReasons is empty the reasons template combo box will be removed.
5. Compile and test your setup. Before Inno will begin uninstall operation IssSurvey will popup with a window asking the user if he wants to give some feedback/comments. The user can choose to Ignore this and continue with the uninstall process or he can submit a quick comment/feedback before uninstalling.

Note: in the above demo the user feedback will be sent to my tested script: please replace this address with your own and also edit the script IssSurvey_mail.php so that it will send the feedback to your inbox and not mine.

If you’re testing with my demo script/setup please include your e-mail address in the survey text box and I will reply you the feedback/survey text received from IssSurvey. You can also test the setup with the second php script (located here ) The info you enter in the survey will be saved in a local file on my server and it will also be listed if you access the script directly here .


Who’s Using IssSurvey?

You like this post? Be the first of my friends to give me a beer! click here. Thanks!
Filed under

Raz-Soft News, [ En ]

| Tags:


  1. Sorry, e-mail in my previous comment is incorrect.

  2. It’s great, BUT what if I have more than one software? Do I have to clone php modules for each software title? Email subject is available in the php code only, and email body is not available for changing too.

  3. Hi Raz,

    Wouldn’t the server request (POST) trigger the firewall on the client machine?


  4. Hi Raz,

    Thnx for this script. I hope many will give us an awnser why they are uninstalling!

    Is it possible to use checkboxes or radiobuttons? That seems to me ‘one click less’ for the one who is uninstalling… maybe they will fill it in more easily :-)


  5. Great,
    it worked.

    I think that I had some problems with PC.
    I uninstalled Visual Studio and now it works.

    Thank you Raz.

  6. Raz,
    I tried also with your server:

    Same result

  7. When I run uninstall I’ve got the following message:
    “Connection Error”
    My internet connection is OK and I can access the form vith Internet Explorer.

    Any ideas?

    • That looks like an invalid server certificate…The security certificate on the server may be invalid? Try to set a http server, or a different https address; didn’t fully tested on https servers…

    • No, you need to use Request.Form["variable"] to get the POST fields.

      In Request.QueryString["page"] will get the page url parameter and Request.Form["variable"] will get POST fields.

      Good luck.

  8. Raz,

    It seems to be very nice tool.

    I have windows hosting (I am using ASP.NET, so I can’t use php.

    Do you have any solution for that?



    • Hi Alex,
      You don’t have to use a specific server side script like php (i just used php for the demo), you can replace the server link inside Inno with your server page link that will handle the POST’s. IssSurvey acts like a browser, making a POST with variables on the server link. Variables names sent by post are: name,pass and cntinfo (comments – base64 encoded string)

  9. In the description it says “Please help us improve our product by telling us why you chose to uninstall My Application.”

    Where does “My Application” get read in from and how can I change it to my application name?

  10. This is awesome, very much appreciated. Thanks!

  11. Somehow some parts are missing in my comment above. For #1 wanted to say that the drop down reasons box needs a automatic default entry, something like Please select one to figure out when the user has not really filled in a reason but has pressed submit.

  12. Hi Raz,

    I tried the IssSurvey plugin and there were some things I liked as well as some rough edges. Here are some suggestions. Woudl have liked to make these changes myself, but the source code is not available.

    1. Default reeason option right now is the first entry in the sReasons string. Can you add a entry before all options, so that you know when the user accidentally presses submit?
    2. In the comments area you have a text saying that users should consider adding their email. How about making that text light gray and make it dissapear when you start typing into the field, like in Vista fields?
    3. While on that subject, why not have a separate email field, marked as optional?

    Thank you!

  13. Good day!

    Really nice plugin. Thank you!

    What about other feedback ability such install time, count of application launching, errors, remote ip address, etc?

    Some from thereof is possible via text file in programm directory. Application may collect such information and then it will be posted to server during uninstall?

    Of course some information can be private then seems we need some GUI element in uninstaller…

    Thank you!

  14. Hi Ivan Moiseev,
    Thank you so much for your feedback on this issue, didn’t get much free time for this issue but it looks like some changes in the server side script should do the trick.

    Thanks again and sorry for the delay reply.

    @Ruslan thank you for your feedback, if you are using Iss Survey and want to be listed in the above “Who’s Using IssSurvey?” list please let me know.

  15. Hi all.

    I’ve figured out how to receive non latin characters.

    you can change server script to include two versions of user input.

    First version – raw message without using base64_decode function.
    The second version – base64 decoded string.

    I’ve tested server script and noticed, that base64_decode works for latin characters only. If we sent cyrillic the message is not base64 encoded and we should not use base64_decode function.

    I hope this is helpful.

  16. Hi, Răzvan

    It works wonderful, thank you!

  17. Hi Alexei,
    IssSurvey has some troubles encoding Cyrillic characters, I’ll fix this issue asap. Give me some time.

    Thanks for your feedback.

  18. Alexei Vinidiktov

    My first comment got eaten…

    Thanks for the script, Raz.

    I’ve got it working, but am having an issue with email encodings.

    The Cyrillic text in the feedback email generated by the IssSurvey_mail.php script is sent in the wrong encoding. For example, instead of “Я решил(а) установить более свежую версию программы” I get “Rx§²Ö¥–·š²‰Ï£ «yÖò”Ë º»ÞÊ m§ÿëk;(~×(“.

    This only happens with text sent from the application to the server script and then to the email account, not with the text entered directly on the page generated by IssSurvey_mail.php.

    If you can give me any hints as to how to solve this problem, I’d be very greatful.


    I’ve tried to post a comment twice, but it didn’t appear here.

    I’m having trouble with Cyrillic characters in the email sent by the server side script. They get garbled.

    If you have any pointers, I’d appreciate your help.


  19. Hi Ruslan,
    Extension updated, vista issues fixed, please re-download the IssSurvey from the above link and let me know if it works on your side.

    Thank you.

  20. Hi, Răzvan, thank you for the extension.
    I have an issue with it on 64bit Vista –
    in the select box it shows something like
    The product has too many errorsbx1IGNL
    instead of
    The product has too many errors
    or sometimes the uninstall crashes.

    I suppose it is related to the 64bit OS.

  21. Hi Ivan,

    Thanks for your feedback and for letting me know about the extension packer issues. Extension has been updated, it’s not packed anymore. Re-download IssSurvey from the above link if necessary.

  22. Raz, many thanks for this plugin.
    It’s helped me to save my time for other things.

  23. Hi Edwin and thanks for your feedback, not sure why no comments left here, they are “talking” on forums/mails but no feedback here from users :)

  24. Good extension! I’m surprised that why no comments left here?!