MySQL をデータ ストレージ エンジンとして使用する Visual Studio 2005 プロジェクト (C#) があります。アプリケーションをインストールする MSI パッケージを作成し、MySQL をサイレント インストールした後に作成したいと考えています。調べてみましたがあまり情報がありませんでした。
MySQL パッケージをサイレント モードでインストールし、CMD でこの 2 つのステートメントを使用して構成した後、
インストール:
msiexec /qb /i "c:\mysql.msi" /l* d:\log_mysql_test.txt INSTALLDIR=d:\mysql_test_mdps
構成、設定:
D:\mysql_test_mdps\bin\MySQLInstanceConfig.exe -i -q "-lD:\mysql_config_log.txt" "-pD:\mysql_test_mdps\bin" "-tD:\mysql_test_mdps\my-template.ini" "-cD:\mysql_test_mdps\my.ini" -v5.5.9 ServerType=DEVELOPMENT DatabaseType=MIXED ConnectionUsage=DSS Port=53306 ServiceName=MySQL_AGM RootPassword=root1234 SkipNetworking=no AddBinToPath=yes
しかし、今では、アプリケーションをインストールする前または後に Visual Studio がそれを行うと言う方法がわかりません。私はそれをグーグルで検索してきましたが、有用なヘルプが見つかりませんでした。
あなたが私を導くことができることを願っています:)
編集:カスタム アクションを使用してソリューションを回避してきました。カスタム インストーラー クラスを使用してカスタム アクションを実行するこの記事を見つけました。最初は問題ないように見えますが、MSI パッケージが 2 番目の MSI インストーラー (MySQL) を起動しようとすると、「アクセスが拒否されました」というコード 2869 のエラーが発生するため、問題が発生しています。
私もこの問題を探していましたが、最初の MSI が 2 番目の MSI を実行しようとすると、適切な権限が適用されず、インストールが失敗するように見えます...
私に何ができるか知っていますか?または、2 番目の MSI インストーラーを起動するにはどうすればよいですか? 完全な権限を持つ (または少なくとも最初のインストーラーと同じ)
これは、Process オブジェクトを作成するために使用しているコードです。
string arg1 = "/qb /i \"" + filepath + "\" /l* \"" + Path.Combine(installpath, logfile) + "\" INSTALLDIR=\"" + installpath + "\"";
Process p = new Process();
p.StartInfo.FileName = "msiexec.exe";
p.StartInfo.Arguments = arg1;
p.Start();