How to slow down installation progress bar in WiX Toolset installer?

Well, i am not joking...

my client wants me to slow down the installation process. The argumentation is clear: if the customers pay as much as a middle-class car for a software, they expect a bit more than 3 sec. installation process...

Any ideas?

Answers


One technique I've used for testing was to write a custom action DLL which alternately slept and incremented the progress bar. And then it ran it backwards, because I was testing external UIs, but you could skip that part. See MsiProcessMessage for the C/C++ API - in particular look at INSTALLMESSAGE_PROGRESS and the Remarks section, and possibly INSTALLMESSAGE_ACTIONSTART and INSTALLMESSAGE_ACTIONDATA if you want to show changing progress text at the time.

I can't imagine intentionally putting that in a real installation (so perhaps give it an easily disabled condition), but it does remind me of the time I had to put a multi-second splash screen on an demo exe that took under a second to load...


The installation experience and application startup are marketing tools, the setup itself in a technical sense is not. It is just a file dump and some registry modifications and you need to chase all marketing people away from interfering with its technical sanity. Everything else is theirs to define to sell the product.

It is important to remember that the setup experience is the users first encounter with the quality of your product. If it fails the product can't be evaluated at all. This is the most expensive error to make in software development, and it is easy to do if you mess around with bells and whistles.

Go with Tom Blodget's suggestion and make the first application launch "smarter" with more information on how to use the software, what features it provides and stuff like that and keep your setup simple. I have seen successful use of application automation with wizard like data generation, viewlets to show off application features, application panes with online help and voice over. All kinds of stuff that can help to get things working quickly for people.

Here is a post with some abstracted ideas on the issue of software deployment as a topic that needs to be taken seriously as a deal-breaker for otherwise excellent software. And the issue of licensing, and how it is implemented is also a topic that causes a lot of issues for the success of software.

Finally - and this is important - is the issue that corporations require silent installation of your software properly implemented for them to approve your software on their network at all. In fact a proper silent installer and deployment strategy can make your software preferred over other, similar software. The degree to which this is important varies based on your software's focus and type of user, but it must always be properly done for your setup not to be a marketing and sales problem in the long run. A final conclusion from all of this is that if your software is intended for large corporations you should not waste your design efforts on an advanced GUI for your setup as it is likely never to be used for large scale deployment scenarios. Rather you should parameterize your installer with public properties that can be set at the command line or via a transform so that your installer can be controlled easily without running it interactively. See this post: How to make better use of MSI files.


Thats a strange request considering all of us are trying to somehow speed up the process. Makes sense though :)

Anyways try using the Quiet Execution custom action LINK

Something like this:

<Property Id="QtExecCmdLine" Value="command line to run"/>
<CustomAction Id="QtExecExample" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="immediate" Return="check"/>
.
.
.
<InstallExecuteSequence>
  <Custom Action="QtExecExample" After="TheActionYouWantItAfter"/>
</InstallExecuteSequence>

Change the string "command line to run" to above to do something like may be "ping -n 5 localhost". -n 5 will try to do the ping 5 times. Or you may use the TIMEOUT as well.

Hope it helps.


You could go in the other direction: Automatically launch the application at the end of the installation with a message saying,

Initial setup is complete. You can begin using the application right away. Additional functionality will be installed in the background as needed.

Compare with the Office 365 installer. (But be sure to provide an administrative install that will conclusively perform a "complete install.")


Need Your Help

android webview load image from local path

android webview

How to load local image into web view? The content inside webview is coming from internet and I want to replace img src with my local drive path? Is it is possible?