You could probably manage this with a Meta-Package.
1st Part is your custom eula (maybe a script that returns error code 0 if the user accepts and -1 if he doesn't) and second part is your software to install.
Only thing left to do is run the script in the user context and the installation in whatever needed. Configure the meta package so, that it stops when the first part isn't successfull.
Haven't tested it, but should theoretically work.
Okay, I just tested it out of curiosity and it works.
I have create a simple VB-Script on Windows that asks the user to proceed with options for yes and no.
I the user chooses yes, the script quits with error code (0). If the user chooses no it quits with (-1).
Then i went ahead and created a software package that runs in user context with the script as payload.
And a Meta package which runs the script first and then the program i want to install. If the users chooses yes it proceeds to install the software, in the other case, it cancels the installation and the script is with an error -1 in the install log. This way you can also see that a user did not accept the terms.
An alternative to Stefan's suggestion (which is actually more elegant than what I'm about to propose) is to put the EULA in the Description field of the Package tab. When the user selects the package in the on-demand UI they will see the EULA displayed at the bottom. You'd have to put a message in there saying that by installing the package they explicitly accept whatever terms and conditions you're laying out.
If you chose to use Stefan's method then you might also consider writing the response to an external file or the registry so that you can track it with a custom field. That might make it easier to find out how users responded.
Thanks for the replies - I didn't even think of using the Meta packages, but that's a great solution. The package description would work too, but this particular situation involves a cost to the individual, so the Meta package would be better suited.
Stefan - if you're happy to share the code for the user prompt, that'd be great. No problems if not - I'm just being a bit lazy here (pretty snowed under, so would save time hunting, but I'm sure it won't be hard to find)
Thanks again - very helpful!
Hi Nathan, sure nor problem - but it's just a simple Yes/no:
"if msgbox ("Continue?", 4,"Question...")=6 then
If the user chooses yes the "installation" of the script is good, if he chooses no it returns an error. When the meta package is configured correctly it stops further installation of the following package.
Just in case you are not aware of this:
If you put this in a meta-package and plan to re-use the same script package - be aware that the client remembers that a package has already been installed and will not "reinstall" the script if its in the same software-package, even if it's in another meta-package. For each Meta-Package you will have to create a new yes/no script.
As an alternative, you could wrap the installation itself in a script (no meta-package, just a vbs that asks the right question and launches the setup/msi etc.).
Only problem with this method is that someone can install the software without having seen the EULA. Especially if multiple items are being installed.