我必须为客户创建一个必须执行此操作的安装工具:
1)创建一个" main" MSI在MSSQL上创建数据库并运行SQL脚本 用户可以决定采用哪个服务器,数据库名称,用户名等。 2)完成后,必须为以下内容创建2个MSI: 1应安装在Windows服务器上的服务APP 和1个GUI,可以安装在任何PC上。
我的问题:如何将步骤1中的数据库设置提供给步骤2所需的MSI包?
我做了什么: 使用Inno设置,我可以运行数据库安装和SQL脚本。 然后我用连接字符串创建一个XML文件,并使用步骤2所需的Inno编译器重新编译MSI。 这不舒服"对于用户而言并不稳定。你有更好的想法如何做到这一点吗?
//解释我如何创建其他MSI包: 在用户创建Dtabase之后,我调用一个小应用程序执行此操作:
字符串INNOCLI =" ISCC.exe&#34 ;; string arg = string.Format(" / O {0} {0} \ serviceonlysetup.iss",temIntalationDirectory);
using (Process cli = new Process())
{
cli.StartInfo.FileName = INNOCLI;
cli.StartInfo.Arguments = arg;
cli.StartInfo.UseShellExecute = false;
cli.StartInfo.RedirectStandardError = true;
cli.StartInfo.RedirectStandardOutput = true;
cli.StartInfo.Verb = "runas";
cli.Start();
cli.BeginErrorReadLine();
cli.BeginOutputReadLine();
cli.WaitForExit();
}
if (!Directory.Exists(guiInstallDirectory))
{
Directory.CreateDirectory(guiInstallDirectory);
}
string argServ = string.Format("/O{0} {0}\\guionlysetup.iss", temIntalationDirectory);
using (Process cli = new Process())
{
cli.StartInfo.FileName = INNOCLI;
cli.StartInfo.Arguments = argServ;
cli.StartInfo.UseShellExecute = false;
cli.StartInfo.RedirectStandardError = true;
cli.StartInfo.RedirectStandardOutput = true;
cli.StartInfo.Verb = "runas";
cli.Start();
cli.BeginErrorReadLine();
cli.BeginOutputReadLine();
cli.WaitForExit();
}
if (File.Exists(string.Format("{0}\\dwhservice_setup.exe", serviceInstallDirectory)))
{
File.Delete(string.Format("{0}\\dwhservice_setup.exe", serviceInstallDirectory));
}
if (File.Exists(string.Format("{0}\\dwhgui_setup.exe", guiInstallDirectory)))
{
File.Delete(string.Format("{0}\\dwhgui_setup.exe", guiInstallDirectory));
}
File.Move(string.Format("{0}\\dwhservice_setup.exe", temIntalationDirectory), string.Format("{0}\\dwhservice_setup.exe", serviceInstallDirectory));
File.Move(string.Format("{0}\\dwhgui_setup.exe", temIntalationDirectory), string.Format("{0}\\dwhgui_setup.exe", guiInstallDirectory));
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadLine();
return;
}
稍后我必须为服务提供MSI,为用户界面提供MSI。两者都必须具有步骤1中的数据库凭据