您的位置:首页 > 其它

产品安装包程序开发-技术实现介绍

2010-08-31 14:13 531 查看
  前一段时间.应公司某项目产品化要求.制作了一个安装程序.之前也试用了不少安装包制作软件如NSIS、Smart Install Maker、VS安装布署项目等

但按领导指示要“一键化安装”,简化用户布署服务器的操作。因为是.NET 开发的B/S应用系统,所以如果要自动配置环境、布署IIS站点、还原数据库等操作用安装包制作软件就显的力不从心了。于是决定自行开发一个比较简单的安装程序。

  要点:1.此安装程序显然是WIN32程序(不能让用户去为了执行安装程序再配置相关环境),于是决定采用VB6.0开发。

2.根据相关方法(读注册表等)要实现判断操作系统信息、IIS是否正确安装、数据库是否正确安装、.NET Framework 4.0(产品运行环境)是否安装。

     3.当操作系统、IIS、数据库没有正确安装是需提示用户无法继续,需用户自行进行相关软件的安装操作。

     4.当.NET Framework4.0没有安装时,需自动安装.NET Framework4.0。

     5.环境检测没有问题后,让用户填写相关信息,配置信息如IIS站点端口号、数据库登录用户/密码等。

     6.释放相关程序文件到用户所选安装目录,调用执行外接相关程序。

     7.因为某些设置操作用VB6实现起来太复杂,因此在确定有.NET Framework4.0环境情况下,

      可采用主程序(vb6)调用外部程序(c#)去实现一些设置操作,如IIS站点自动布署、数据库自动还原、相关目录权限设置、相关菜单创建。

     8.释放相关卸载程序。

      相关主要界面一览:









     主安装程序(VB6)中用到的技术点比较少,主要是嵌入资源文件、读写注册表、读写INI文件、得到系统文件夹、读取系统进程、CAB包释放等,这个都可以在网上搜索到。

     在上面最后一张图中点击执行配置后,将采用SHELL方式,调用IIS 自动配置+创建快键方式、SQL数据库还原、文件夹权限设置三个小程序进行配置操作。

     

     程序都是些基础代码,在这里简单讲一下实现原理:

      1.IIS 自动配置+创建快键方式:

        IIS站点自动配置功能可以借签:利用C#创建 IIS 站点并设置.NET Framework版本为ASP.NET 2.0 的方法       

        原理:IIS 6.0以后使用MetaBase.xml存储IIS信息,因此可以直接修改这个文件即可. 相关.NET Framework 版本设置需要注意要取得其系统目录再设置ScriptMaps信息.

        通过把主安装程序中用户填写的相关端口号、站点名称等信息对IIS自动配置程序用到的INI文件进行更新后,再执行IIS自动配置用户设置的站点。

       创建快捷方式主要代码如下:

          // Create a Windows Script Host Shell class

    IWshShell_Class shell = new IWshShell_Class();//创建 Windows Script Host Shell 类

    // Define the shortcut file

     IWshURLShortcut shortcut = shell.CreateShortcut(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Favorites) + "\\测试.url") as IWshURLShortcut;

    shortcut.TargetPath = "http://localhost:88";

    // Save it

    shortcut.Save();

      2.SQL数据库还原

        SQL数据库操作比较简单,可以参考:C#自动附加数据库或还原、备份、分离等 - 曾伟 - 博客园

        上面的这篇文章实现的SQL数据库操作比较全面,并且比较通用,值得借签学习。

      3.文件夹权限设置

        利用C#中DirectorySecurity 类对配置到INI中的相关目录进行权限设置,主要代码如下:

          DirectoryInfo dirinfo = new DirectoryInfo(pathname);

          //取得访问控制列表
          DirectorySecurity dirsecurity = dirinfo.GetAccessControl();

          //FullControl 完全控制
   dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.FullControl, InheritanceFlags.ContainerInherit, PropagationFlags.InheritOnly, AccessControlType.Allow));

   //ReadOnly 只读
dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.Read, AccessControlType.Allow));

        //Write 写入
dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.Write, AccessControlType.Allow));
   //Modify 修改
dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.Modify, AccessControlType.Allow));

     尚未解决问题:

      1.对于IIS 6.0初次布署.NET项目时,需要对WEB 扩展中将.net 相关项设置为允许,此操作可以通过程序实现,本人还没有找到相关技术实现文章,如果有朋友懂这面请评论指导。

      2.不少项目系统中都会用到导出EXCLE等操作。需要设置COM组件的相关权限。这个采用程序去实现比较复杂,没有找到相关好的实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐