我有一个商业ASP.NET网站的附加组件。我的插件需要人们将条目合并到他们的web.config中,添加/覆盖现有文件,并将一些DLL文件添加到bin文件夹。
使用向导类型的安装是否有一种安全的方法来创建安装程序?这将非常有助于非技术人员轻松安装附加组件。甚至基于网络的安装程序也不错?
非常感谢任何帮助或建议。
答案 0 :(得分:4)
有类似的问题......
在命令行程序中,您可以根据需要修改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文件。一个安装程序可以安全地总是覆盖,另一个用作用户可以安全修改的覆盖。