Was ich für meine Installer tun, ist die Verwendung der "Datei" -Attribut in App.Config. Der appSettings Block nimmt eine „Datei“ -Attribut, etwa so:
<appSettings file="user.config">
<add key="foo" value="some value unchanged by setup"/>
</appSettings>
Die „Datei“ -Attribut ist so etwas wie CSS, dadurch, dass die meisten spezifischen Einstellung gewinnt. Wenn Sie "foo" in user.config und App.config definiert haben, wird der Wert in user.config verwendet.
Dann habe ich einen Config-Generator, der einen zweiten appSettings-Block in user.config schreibt (oder wie immer man es nennen will), mit Werten in einem Wörterbuch.
string configFilePath = string.Format("{0}{1}User.config", targetDir, Path.DirectorySeparatorChar);
IDictionary<string, string> userConfiguration = new Dictionary<string, string>();
userConfiguration["Server"] = Context.Parameters["Server"];
userConfiguration["Port"] = Context.Parameters["Port"];
ConfigGenerator.WriteExternalAppConfig(configFilePath, userConfiguration);
Wir es, für unseren Test, Schulung und Produktionsserver verwenden, so alles, was wir tun müssen, ist an:
using System.Collections.Generic;
using System.Text;
using System.Xml;
namespace Utils
{
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();
}
}
}
}
In Ihrem Installateur, nur so etwas wie die folgenden in Ihrer Installation Methode hinzufügen der Name und das Passwort des Rechners während der Installation, und alles ist für uns erledigt. Es war ein 3-stündiger Prozess, der mehrere Konfigurationsdateien durchlaufen hat, um Passwörter zu setzen. Jetzt ist es fast vollständig automatisiert.
Hoffe, das hilft.
Danke dafür, es sieht nach der Art von Lösung aus, nach der ich suche. Obwohl ich ein Problem erlebe, wenn ich die Install-Methode in meinem Installer überschreibe, sind die Werte von der benutzerdefinierten UI nicht in den Kontextparametern enthalten. Benutze ich die richtige Methode? Prost – MrEdmundo
Ignorieren, dass ich nicht die Daten von der Benutzeroberfläche im CustomActions Bearbeitungsbildschirm übergeben hatte. – MrEdmundo