0

I have a Basic MSI project installer. When user run a setup then I want to download a EULA file from server and then I want to display it on License Agreement dialog at the time of installation. It's possible in InstallScript installer. But how I can show EULA file dynamically in LicenseAgreement dialog in Basic MSI installer?

Ajit Medhekar
  • 1,018
  • 1
  • 10
  • 39
  • Downloading things via your setup is a very bad idea. The setup might run on a system with a proxy server for web access and often several firewalls (software, hardware) and perhaps also security software. All these factors can interfere with the download. As could the fact that the user may simply install whilst offline (no wireless connectivity). You should use a different approach, perhaps just link to the online license agreement so that the browser opens. It will generally have the correct proxy settings and hardware details configured. – Stein Åsmul Nov 15 '17 at 02:44
  • Moreover your setup can also be run in silent mode, and you should definitely not have any custom actions trying to access the Internet during a silent install. The whole GUI is skipped in silent mode, but it is easy to misconfigure a custom action which then may trigger a runtime error in silent mode. – Stein Åsmul Nov 15 '17 at 02:46

1 Answers1

1

You need a custom action to dynamically download the rich text and then update the in memory msi database using temporary views. See:

https://resources.flexera.com/web/pdf/archive/msiaccess.pdf

If you want to use C#/DTF it's more like this:

http://blog.deploymentengineering.com/2008/07/dynamic-windows-installer-ui.html

Christopher Painter
  • 54,556
  • 6
  • 63
  • 100
  • Thanks Christopher for this. I have tried this solution in InstallScript CA. I'm able to read that particular rich text, but I'm not able to find InstallScript API to update MSI DB temporally. Even my license agreement is huge. So will it be efficient to write data to Text field of MSI DB ? – Ajit Medhekar Nov 15 '17 at 14:12
  • 1
    I'm personally trying to avoid comment on an installer that could have a different EULA every time it's run. I am personally of the opinion that no one reads anything in the installer so I keep the UI as simple as possible. Perhaps it would be easier/better for you to move this feature out of the installer and into the application where you can code easier and prompt the user more often whenever the eula changes. – Christopher Painter Nov 15 '17 at 14:24
  • I agree with Chris, put it in the application instead - better error handling and debugging features, and it also makes the user see the license agreement even if the setup was run silently (corporate deployment). I often recommend moving features from the setup to the application, for example for [**licensing**](https://stackoverflow.com/questions/24359248/installer-with-online-registration-for-windows-application/24360658#24360658) (see link for details - the rationale is similar for your EULA issue). To avoid "passing the buck" - perhaps offer to do the coding in the app yourself? – Stein Åsmul Nov 15 '17 at 15:45
  • 1
    The obvious risk of **online EULA** (regardless of whether it is done via the setup or the application) is that Internet access cannot generally be guaranteed for your application on corporate networks - there might be only Intranet access for applications, and proxy access to the Internet for the browser (and maybe some selected apps). Please see the updated blurb in the linked content on "licensing" in the comment above. Perhaps launch the browser from the application to view the online EULA is the easiest? But then how do you guarantee that the user has actually seen it? I'm no lawyer :-). – Stein Åsmul Nov 15 '17 at 16:03