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

时间:2010-11-12 16:35:11

标签: c# .net asp.net installer windows-installer

我有一个商业ASP.NET网站的附加组件。我的插件需要人们将条目合并到他们的web.config中,添加/覆盖现有文件,并将一些DLL文件添加到bin文件夹。

使用向导类型的安装是否有一种安全的方法来创建安装程序?这将非常有助于非技术人员轻松安装附加组件。甚至基于网络的安装程序也不错?

非常感谢任何帮助或建议。

2 个答案:

答案 0 :(得分:4)

有类似的问题......

的Web.Config

  • 创建了一个.NET命令行程序,您可以从安装程序调用它,将web.config路径和其他args传递给我,以匹配我正在尝试做的事情
  • 在命令行程序中,您可以根据需要修改web.config ...下面是设置连接字符串&的示例。来自web.config中的地址的stmp

    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)。使用 HM NIS编辑作为一个很好的起点,因为它有一个向您生成脚本的向导。从那里,您可以根据需要修改脚本。在我的情况下,我在安装的文件后调用了我的命令行程序。下面的NSIS脚本示例。

Section "My Config Wizard" SecWizard
ExecWait '"$INSTDIR\Bin\My.Config.Wizard.exe" "$INSTDIR"'
Return
SectionEnd
祝你好运!需要更多的例子才能打我。 :P

答案 1 :(得分:0)

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

开箱即用,它不能。

多年来我用过的两种策略:

1)让安装程序足够聪明,在更换xml之前从xml中挑选出关键信息。然后再回复信息。

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