Những gì tôi làm cho trình cài đặt của mình là sử dụng thuộc tính "tệp" trong App.Config. Khối appSettings có thuộc tính "tệp", như vậy:
<appSettings file="user.config">
<add key="foo" value="some value unchanged by setup"/>
</appSettings>
Thuộc tính "tệp" giống như CSS, trong đó cài đặt cụ thể nhất sẽ thắng. Nếu bạn có "foo" được định nghĩa trong user.config cũng như App.config, giá trị trong user.config được sử dụng.
Sau đó, tôi có trình tạo cấu hình viết ra khối appSettings thứ hai cho user.config (hoặc bất kỳ thứ gì bạn muốn gọi), sử dụng các giá trị trong từ điển.
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();
}
}
}
}
Trong cài đặt của bạn, chỉ cần thêm một cái gì đó như sau trong phương pháp cài đặt của bạn:
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);
Chúng tôi sử dụng nó cho kiểm tra, đào tạo, và các máy chủ sản xuất của chúng tôi, vì vậy tất cả chúng ta phải làm là xác định tên máy và mật khẩu trong quá trình cài đặt và mọi thứ đều được chúng tôi quan tâm. Nó được sử dụng để là một quá trình 3 giờ, bao gồm đi qua nhiều tập tin cấu hình để thiết lập mật khẩu. Bây giờ nó gần như hoàn toàn tự động.
Hy vọng điều này sẽ hữu ích.
Cảm ơn vì điều này, nó trông giống như loại giải pháp mà tôi theo sau. Mặc dù tôi đã gặp sự cố, nếu tôi ghi đè lên phương thức Cài đặt trong trình cài đặt của mình, các giá trị từ giao diện người dùng tùy chỉnh không nằm trong các tham số ngữ cảnh. Tôi có sử dụng đúng phương pháp không? Chúc mừng – MrEdmundo
Bỏ qua điều đó, tôi đã không chuyển dữ liệu từ giao diện người dùng trong màn hình chỉnh sửa CustomActions. – MrEdmundo