Scrive un file di configurazione secondario con un blocco appSettings utilizzando le impostazioni del programma di installazione. Nel file di configurazione principale, utilizzare l'attributo di file in appsettings per fare riferimento al secondo file di configurazione, in questo modo:
<appSettings file="User.config">
Impostazioni nella configurazione secondaria sostituirà le chiavi corrispondenti nella configurazione principale.
Nel vostro installatore:
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
string server = Context.Parameters["Server"];
string port = Context.Parameters["Port"];
string targetDir = Context.Parameters["TargetDir"];
// Build your connection string from user-input parameters and add them to dictionary
WriteAppConfig(targetDir, server, port);
}
private void WriteAppConfig(string targetDir, string server, string port)
{
string configFilePath = Path.Combine(targetDir, "User.config");
IDictionary<string, string> userConfiguration = new Dictionary<string, string>();
userConfiguration["Server"] = server;
userConfiguration["Port"] = port;
ConfigGenerator.WriteExternalAppConfig(configFilePath, userConfiguration);
}
public class ConfigGenerator
{
public static void WriteExternalAppConfig(string configFilePath, IDictionary<string, string> userConfiguration)
{
using (XmlTextWriter xw = new XmlTextWriter(configFilePath, Encoding.UTF8))
{
xw.Formatting = Formatting.Indented;
xw.Indentation = 4;
xw.WriteStartDocument();
xw.WriteStartElement("appSettings");
foreach (KeyValuePair<string, string> pair in userConfiguration)
{
xw.WriteStartElement("add");
xw.WriteAttributeString("key", pair.Key);
xw.WriteAttributeString("value", pair.Value);
xw.WriteEndElement();
}
xw.WriteEndElement();
xw.WriteEndDocument();
}
}
}
fonte
2009-04-24 15:24:44
Stavo guardando una vecchia versione della domanda. Usando il link che ho fornito, puoi avere una schermata popup la prima volta che l'applicazione viene avviata per richiedere all'utente di cambiare le cose. –