I was with the choice of SQLite as database for easy distribution of my offline c# desktop application (WPF / Winforms) but currently cornered to MySQL database due to IRD certification.
My main concern is that I want to know If I could use MySQL database for offline desktop application and distribute .exe via URL for easy unattended installation.
Is it possible?
As shown on SQLite's page Appropriate Uses For SQLite, a client/server database like MySQL would work better for client/server applications, high-volume websites, very large datasets, or high concurrency. Nothing of this applies to your offline application, so you should use a database that was designed to be embedded (not necessarily SQLite).
MySQL has an embedded server library which can be linked directly into an application. When using C#, the MySQL library is linked into the .NET MySQL database driver, so using the embedded server would require recompiling this driver. And such linking will trigger MySQL's GPL license. And:
The libmysqld embedded server library is deprecated as of MySQL 5.7.17 and will be removed in MySQL 8.0.
It would be possible to install the standalone MySQL server yourself; this is described in Installing MySQL on Microsoft Windows Using a noinstall Zip Archive.
However, this would still run the MySQL server as a separate process or service, and this could conflict with other installations on the machine; it would be your installer's responsibility to configure that MySQL instance correctly for whatever environment it encounters on the target machine.
Related
I have create a Windows application in WPF using Visual Studio 2013, and I'm using MySQL as database, now I want to include MySQL as a distributable package in my setup file.
I am new to development and have very little idea about deploying the software, and i have been searching over the internet but hardly finds any good article which explains the steps to perform the task.
A MySQL database is supposed to be setup on a (remote) database server that the client applications connect to. You don't (or at least you shouldn't) set up a server on each workstation where your client application is installed on.
What you probably want is a self-contained database that can be shipped with your application and run "as-is" without any remote servers or specific setup.
SQLite is a popular example of such a database.
Getting started with SQLite in C#: http://blog.tigrangasparian.com/2012/02/09/getting-started-with-sqlite-in-c-part-one/
Use this:
https://marketplace.visualstudio.com/items?itemName=UnniRavindranathan-MSFT.MicrosoftVisualStudio2013InstallerProjects
And then follow this:
http://geekswithblogs.net/TarunArora/archive/2014/04/24/visual-studio-2013-installer-projects-ndash-hello-world-installer.aspx
There will be settings which you will be setting when creating installer with the wizard, one will be like pre-requisites for the program and will ask you for a MSI location for that program. Dump the location of your LocalDB or whatever MySQL software that you are using (Popular ones are SQLite/SQL Server Express). When the user starts to install the program it will make them install your SQL prerequisite software before moving onto installing your program.
We plan on pushing a windows application on computers external from our companies network (in various locations). I'm wondering what options I have for databases. I'd like to use SQL Server, but is there a way to avoid paying for licenses for each PC we load the windows application on?
Also, is there a way to have the data part of the executable when deploying the application, or would I need to install SQL Server on each machine?
Thanks!
As an alternative and a bit newer technology to Sql Server Compact Edition, you could use LocalDB.
Both are MS SQL products, but LocalDB doesn't have the disadvantages of CE, is still a file based DB and doesn't require the server installation, configuration and maintenance of SqlServer Express, only the runtime components.
Here you can find a nice comparison between Express, Compact and LocalDB
and here you can find the introduction of LocalDB by Microsoft.
The licensing of LocalDB is the same as for SqlExpress and you also need an installer to run for the runtime components of LocalDB (which is one downside when compared to CE).
Is there a way to avoid paying for licenses for each PC we load the windows application on?
Presumably you're just accessing a local database on these machines right? In that case you can use SQL Server Compact. It's free and pretty darn good.
Is there a way to have the data part of the executable when deploying the application?
If you're deploying your application via ClickOnce, then you can set SQL Server Compact as a prerequisite so the application will check for its presence and install it if needed.
Otherwise, you can push it out like any other prerequisite as part of the installer package (i.e. InstallShield or WiX).
I have developed a Windows-based project using C# and MySQL. Now I want to deploy this project to my client.
How to create an Installer (package)?
How to dump the database into the client's system?
Note:
Applications will be installed across multiple systems -- each system has their own database
System doesn't have MySQL installed (installation is not preferred).
This is a completely standalone application, not related to any servers.
Problem: I cannot ask the end user to install MySQL in their system to be able to export, dump, and import in every system.
Required: A package installer which installs my project along with MySQL patches and required data in database.
You can create an installation package using install shield
Other alternatives
http://karcollection.blogspot.in/2012/05/mysql-silent-installation-in-windows.html
http://karcollection.blogspot.in/2012/05/mysql-silent-installation-in-windows.html
Hi have you used MySQL just because its a freely available database product?
by the sound of what your asking would SQL CE not be a better database option?
http://en.wikipedia.org/wiki/SQL_Server_Compact
As far as i know with SQL CE you can embed the database into the application and would not need to install a database server on the client computer.
I have one problem with service base database, I have used it in one of my application but I dont know if user who'll use it need to have something installed to be able to run application (like you need to have installed NET framework for c# applications)
Note: This is windows application
It depends on what database engine you're using. SQL Server/SQL Express/Oracle/MySQL require you install the application on the machine before it'll work. databases engines like SQLite and Firebird are just Dll's, so you can include then in your project.
If the file is an MDF that's a SQL Server file - you need to install SQL server, or SQL express.
You can include it with your app and do it silently:
http://social.msdn.microsoft.com/forums/en-US/sqlsetupandupgrade/thread/7180e4dc-5c1e-4501-83d7-6882abb1f04e/
You will need to install the relevant database engine with the correct service name, and create the database and relevant objects on installation.
I am building an application which needs to connect to a central MySQL database. The application is written in C#. I have installed the .NET connector from MySQL for the VS integration.
I was wondering if there is anything special I need to do to be able to have my application be portable and not require an install of the connector on every machine it is used on?
There is a similar question I found here on SO, but it is for a server instead instead of client which is very different.
Edit:
Connector I used: .NET connector 6.2.3 (
http://www.mysql.com/downloads/connector/net/)
When you make an installer, you can include the dll for the mysql connecter such that it is copied along with the other side. This way, whenever the application is installed properly, you wont have the problem.