I am creating a installer using WIX, The requirement here is that when the user clicks on the next button on the license agreement dialog, I want to check the Internet spped of the user. If it is less than 1 mbps, I should show a message to the user that “the internet speed is less than the minimum required by the application. Do you still want to go ahead with the Installation?” This messagebox contains two buttons “Yes” and “No”. If user clicks on Yes, I continue with the Installation. On click of “No”, the Installation aborts.
I think this is impossible or may be quite difficult to do it with WIX. So thought of writing a C# Application, which will check the internet speed and show the dialog to the user. I want to launch this utility to be launched in the UI Sequence. Then capture whether user clicked on Yes or No, If user clicks on Yes, i continue with the Installation otherwise Installation aborts.
Note- When user clicks either Yes or No, the C# Application closes.
How can I :
1. Embed C# App in msi
2. Launch it in UI Sequence
3. Get the user action result and proceed accordingly.
Please help, it is urgent.
First, I question the value of doing this in an installer. Internet speed is highly variable and a user is just going to click yes and proceed. Any kind of system status check should really be inside your application.
But if you really want to have a Managed Custom Action in your installer that can set a property then you want to check out Deployment Tools Foundation.
WiX and DTF: Introduction
Deployment Tools Foundation (DTF) Managed Custom Actions
How long will it take for your code to determine internet speed? If it can do it in a few seconds then you can consider scheduling the custom action between CostInitialize and InstallFinalize. The CA will set a property and then you can use that property in your UI to decide if a warnign dialog that you author should be shown or not.
Again though, I have to suggest that this isn’t a good idea.