C#调用innosetup实现自动打包

 

Inno Setup 是一个免费的 Windows 安装程序制作软件。第一次发表是在 1997 年,Inno Setup 今天在功能设置和稳定性上的竞争力可能已经超过一些商业的安装程序制作软件。


关键功能:

  • 支持现在所有正在使用的 Windows 版本: 7, 2008 R2, Vista, XP, 2008, 2003和2000 (不需要服务包)。
  • 广泛支持在 64 位 的 Windows XP and Windows Server 2003 版本的操作系统中的 64 位应用程序安装。支持 x64 和 Itanium 两个结构。(在 Itanium 结构中,必须在 64 位模式安装 Service Pack 1。)
  • 支持创建单个 EXE 格式的安装程序,使你的程序可以很方便地在网络上发表。同时也支持磁盘延伸。
  • 标准的 Windows 2000/XP 样式向导界面。
  • 定制安装类型,例如:完整安装,最小安装,自定义安装。
  • 完整的卸载功能。
  • 文件安装:
    包括完全的“压缩”支持,bzip2 和 7-Zip LZMA/LZMA2 文件压缩。安装程序可以比较文件版本信息,替换正在使用的文件,使用共享文件计数,注册 DLL/OCX 和类型库,以及安装字体。
  • 可以在任意地方创建快捷方式,包括开始菜单和桌面。
  • 创建注册表 和 .INI 条目。
  • Running other programs before, during or after install。
  • 支持多语言安装,including right-to-left language support.
  • 支持密码和加密安装。
  • 支持 数字签名 安装和卸载。
  • 后台安装和后台卸载。
  • Unicode 安装。
  • Integrated preprocessor option for advanced compile-time customization.
  • 完整的 Pascal 脚本 引擎选项于运行期高级自定义安装和卸载。
  • 全部源代码公开 (Borland Delphi 2.0-5.0 和 2009)。


它是真正免费的软件,即使作为商业使用?

是,它可以完全免费使用,即使作为商业应用程序开发使用。

(注意: “完全免费”不完全是“完全自由”。Inno Setup 是有版权的软件,不是公共域软件,在发行和使用时有一些限制;查阅 LICENSE.TXT 文件获取详细资料。)


        private void btn_pack_Click(object sender, EventArgs e)
        {
            string exe = "\"" + @"C:\Program Files (x86)\Inno Setup 5\ISCC.exe" + "\"";
            string cmdline = "\"" + @"F:\文件整理\C#\Start10\Start10\bin\发布\start10.iss" + "\"";
            string output = ExecuteInCmd2(exe, cmdline);
            if (output.Contains("成功编译"))
            {
                MessageBox.Show("Success");
            }
            else
                MessageBox.Show("Fail");

            //方式2通过cmd.exe传命令行
            //string cmdline = "\"" + @"C:\Program Files (x86)\Inno Setup 5\ISCC.exe" + "\" \"" + @"F:\文件整理\C#\Start10\Start10\bin\发布\start10.iss"+"\"";
            //string output = ExecuteInCmd(cmdline);
            //if(output.Contains("成功编译"))
            //{
            //    MessageBox.Show("Success");
            //}
            //else
            //    MessageBox.Show("Fail");
        }

        /// 
        /// 执行内部命令(cmd.exe 中的命令)
        /// 
        /// 命令行
        /// 执行结果
        public static string ExecuteInCmd(string cmdline)
        {
            using (var process = new Process())
            {
                process.StartInfo.FileName = "cmd.exe";
                process.StartInfo.UseShellExecute = false;
                process.StartInfo.RedirectStandardInput = true;
                process.StartInfo.RedirectStandardOutput = true;
                process.StartInfo.RedirectStandardError = true;
                process.StartInfo.CreateNoWindow = true;
                process.Start();
                process.StandardInput.AutoFlush = true;
                process.StandardInput.WriteLine(cmdline + "&exit");

                //获取cmd窗口的输出信息  
                string output = process.StandardOutput.ReadToEnd();

                process.WaitForExit();
                process.Close();
                return output;
            }
        }


        /// 
        /// 执行内部命令(cmd.exe 中的命令)
        /// 
        /// 命令行
        /// 执行结果
        public static string ExecuteInCmd2(string exe, string cmdline)
        {
            using (var process = new Process())
            {
                process.StartInfo.Arguments = cmdline;
                process.StartInfo.FileName = exe;
                process.StartInfo.UseShellExecute = false;
                process.StartInfo.RedirectStandardInput = true;
                process.StartInfo.RedirectStandardOutput = true;
                process.StartInfo.RedirectStandardError = true;
                process.StartInfo.CreateNoWindow = true;
                process.Start();
                process.StandardInput.AutoFlush = true;
                //process.StandardInput.WriteLine(cmdline);

                //获取cmd窗口的输出信息  
                string output = process.StandardOutput.ReadToEnd();

                process.WaitForExit();
                process.Close();
                return output;
            }
        }

你可能感兴趣的:(C#,编程,编程工具,c#,开发语言,.net)