寻找一个想法如何创建多个MSI

时间:2017-06-20 09:22:53

标签: installation windows-installer inno-setup

我必须为客户创建一个必须执行此操作的安装工具:

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中的数据库凭据

0 个答案:

没有答案