代码之家  ›  专栏  ›  技术社区  ›  TruMan1

如何构建安装程序以更新ASP.NET的web.config、dll、文件等

  •  2
  • TruMan1  · 技术社区  · 14 年前

    我有一个商业ASP.NET网站的附加组件。我的加载项要求用户将条目合并到web.config中,添加/覆盖现有文件,并向bin文件夹添加一些dll文件。

    有没有一种好的、安全的方法来创建安装程序,而不是用向导类型的安装来完成?它将真正帮助非技术人员轻松安装附加组件。也许甚至一个基于网络的安装程序也会很好?

    如有任何帮助或建议,我们将不胜感激。

    2 回复  |  直到 14 年前
        1
  •  4
  •   Brian Minnich    14 年前

    有类似的问题…

    Web.CONFIG

    • 创建了一个.NET命令行程序,您可以从安装程序调用该程序,并将web.config路径和其他参数传递给它,以匹配我正在尝试执行的操作。
    • 在命令行程序中,您可以根据需要修改web.config…下面是在web.config中设置连接字符串和stmp-from地址的示例

      public static void SetConnectionString(string name, string connString, string webConfigPath)
      {
          string directory = System.IO.Path.GetDirectoryName(webConfigPath);
          VirtualDirectoryMapping vdm = new VirtualDirectoryMapping(directory, true);
          WebConfigurationFileMap wcfm = new WebConfigurationFileMap();
          wcfm.VirtualDirectories.Add("/", vdm);
          System.Configuration.Configuration webConfig = System.Web.Configuration.WebConfigurationManager.OpenMappedWebConfiguration(wcfm, "/");
          webConfig.ConnectionStrings.ConnectionStrings[name].ConnectionString = connString;
          webConfig.Save();
      }
      
      
      public static void SetFromAddress(string email, string webConfigPath)
      {
          string directory = System.IO.Path.GetDirectoryName(webConfigPath);
          VirtualDirectoryMapping vdm = new VirtualDirectoryMapping(directory, true);
          WebConfigurationFileMap wcfm = new WebConfigurationFileMap();
          wcfm.VirtualDirectories.Add("/", vdm);
          System.Configuration.Configuration webConfig = System.Web.Configuration.WebConfigurationManager.OpenMappedWebConfiguration(wcfm, "/"); 
          System.Net.Configuration.MailSettingsSectionGroup mailSettings = (System.Net.Configuration.MailSettingsSectionGroup)webConfig.GetSectionGroup("system.net/mailSettings");
          mailSettings.Smtp.From = email;
          webConfig.Save();
      }
      

    安装程序

    我使用NSIS( http://nsis.sourceforge.net/Main_Page )使用 NIS编辑 作为一个很好的起点,它有一个向导可以为您生成脚本。从那里您可以根据需要修改脚本。在我的例子中,我在安装的文件之后调用了我的命令行程序。下面的NSI脚本示例。

    Section "My Config Wizard" SecWizard
    ExecWait '"$INSTDIR\Bin\My.Config.Wizard.exe" "$INSTDIR"'
    Return
    SectionEnd
    

    祝你好运!我需要更多的例子。P

        2
  •  0
  •   Christopher Painter    14 年前

    web.config是一个棘手的部分。第一个安装程序将部署一个XML文件,然后用户将更改其中的内容。同时,您还有另一个构建,开发人员在其中对XML进行更改,现在安装人员必须尝试找出如何将所有这些内容合并回一起。

    开箱即用,不行。

    2.我多年来使用的策略:

    1)在替换XML之前,让安装程序足够智能地从XML中挑选关键的信息。然后重新应用信息。

    2)将软件设计为具有2个XML文件。一个是安装程序可以安全地覆盖,另一个是作为用户可以安全地修改的覆盖。