当前位置:  开发笔记 > 编程语言 > 正文

如何在安装时设置应用程序设置(通过安装程序类)

如何解决《如何在安装时设置应用程序设置(通过安装程序类)》经验,为你挑选了1个好方法。

我有一个具有Installer类的Visual Studio安装项目.在安装程序类中,我设置如下设置:

MessageBox.Show(Properties.Settings.Default.MySetting);

Properties.Settings.Default.MySetting = "Foo";
Properties.Settings.Default.Save();

MessageBox.Show(Properties.Settings.Default.MySetting);

问题是,即使我知道这个代码正在执行(我正在做其他的事情),设置永远不会设置!

消息框确实表明正在设置该值,但是当我转到.config文件时,该值仍然是空白的!

任何人有任何想法和/或可能的解决方法?



1> Chris Dogget..:

我为安装程序做的是使用App.Config中的"file"属性.appSettings块采用"file"属性,如下所示:


    

"file"属性有点像CSS,因为最具体的设置获胜.如果在user.config和App.config中定义了"foo",则使用user.config中的值.

然后,我有一个配置生成器,使用字典中的值将第二个appSettings块写入user.config(或任何你想要调用它).

using System.Collections.Generic;
using System.Text;
using System.Xml;

namespace Utils
{
    public class ConfigGenerator
    {
        public static void WriteExternalAppConfig(string configFilePath, IDictionary userConfiguration)
        {
            using (XmlTextWriter xw = new XmlTextWriter(configFilePath, Encoding.UTF8))
            {
                xw.Formatting = Formatting.Indented;
                xw.Indentation = 4;
                xw.WriteStartDocument();
                xw.WriteStartElement("appSettings");

                foreach (KeyValuePair pair in userConfiguration)
                {
                    xw.WriteStartElement("add");
                    xw.WriteAttributeString("key", pair.Key);
                    xw.WriteAttributeString("value", pair.Value);
                    xw.WriteEndElement();
                }

                xw.WriteEndElement();
                xw.WriteEndDocument();
            }
        }
    }
}

在安装程序中,只需在Install方法中添加以下内容:

string configFilePath = string.Format("{0}{1}User.config", targetDir, Path.DirectorySeparatorChar);

IDictionary userConfiguration = new Dictionary();

userConfiguration["Server"] = Context.Parameters["Server"];
userConfiguration["Port"] = Context.Parameters["Port"];

ConfigGenerator.WriteExternalAppConfig(configFilePath, userConfiguration);

我们将它用于我们的测试,培训和生产服务器,因此我们所要做的就是在安装过程中指定机器名称和密码,并为我们处理所有事情.它曾经是一个3小时的过程,包括通过多个配置文件来设置密码.现在它几乎完全自动化了.

希望这可以帮助.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有