If your installation is time-consuming and prone to failure, perform the risky task last (so as to maximize the user's waiting time and aggravation)

Have it stop cold every few minutes to prompt the user for some inane info (which could have prompted for up-front).
This helps prevent users from doing anything useful while waiting:
Upon realizing that your program will take a while, most will tend to other things
(under the false assumption that the installation will actually be done when they check back).
But this forces them to keep looking to see if it paused to prompt yet again (thus greatly enhancing their aggravational experience).

Startup:If your program takes a long time to startup, do not provide the slightest clue that anything is happening.
The confused user will then repeatedly click in hopes of getting something to happen,
and then eventually be inundated with 5-10 instances of your program.

Setup/option screens,:Separate your settings into as many sections as possible, and create/name these sections per some philosophy that only you could ever hope to understand.
And always include "General" and "Advanced" sections (thus forcing the user to guess what you consider "general" and "advanced").
This way, the user has to blindly wade through numerous sections in search of that elusive setting.
Never place all settings in a single/searchable screen (like this).

Progress bars:

Pause 30-60 seconds at 96%, and then again at 100%.

When the progress bar hits 100%, just display another (repeat a few times).

Never allow a bar to convey the actual percentage of total time that it will take to complete a task.

Logins:

Make web-site login "User" prompts vague, such that the user can't tell if you want their user name or their email address.
Or better yet, be outright misleading:
I.E. prompt for "User:" when you really want their full email address, or vice versa.

If they enter their email when you just want a user name,
do not make it easy for them by simply extracting their user name from it.
Just display "Invalid user" and let them figure it out.