Step 1: You're doing it wrong
You're attempting to install the mysql server. This should be your first clue that something is wrong. Most server apps are designed to be installed on servers, not on clients. The notable point in this is that server apps like to assume that they 'own' the server. This is a giant no-no for client apps.
Step 2: Make a decision, now that we are properly informed
Now that we've established that we're doing it wrong, we need to choose what to do. We have 2 options:
- Switch away from MySQL to a 'client' database such as SQLite or SQL Server Compact Edition.
- Hack around the problems of installing the server app.
I personally would recommend switching to SQLite (or similar) as soon as possible. It's the "right thing" to do, and you won't have to be maintaining hacks for years to come.
Step 3: You'll want to hack MySQL anyway because it probably seems easier.
You have been warned. Here are some of the things you will need to be aware of, and mitigate:
- MySQL wants to install into program files\mysql. If the user already has MySQL installed themselves. You'll break everything
- You'll need to tell your version of MySQL to install into a custom folder. I'd recommend it as a subfolder of your application
- MySQL wants to run as a service (and the service will likely be called 'mysql'). Again if the user already has mysql, you'll break everything.
- You'll need to run your service under a different name
- The MySQL server will likely want to write files to Program Files\etc.
- You'll need to change it's configuration so it writes to %APPDATA% and so on
- MySQL will assume it is always being run by the same user. If you have 2 users on the machine who want to use your program, you'll need to hack accordingly, by either running MySQL as a local service account (security flaws ahoy), or by installing a seperate mysql for each user.
So with all this in mind, I'd say your best bet is to set up an xcopyable mysql