app.config PUEDE ser cambiado ... de sólo lectura sin embargo, existe en una ubicación similar a HKEY___LOCAL_MACHINE es decir, el usuario medio tiene acceso.
Así que tendrá que cambiarlo como administrador: el mejor momento sería durante la instalación, donde se supone que debe instalar con permisos mejorados.
Así que cree una clase de Instalador, use una Acción personalizada en el proyecto de instalación para pasar las elecciones del usuario (por ej. "/ Svr = [SERVIDOR]/db = [DB]/uilevel = [UILEVEL]") y, AfterInstall caso, cambie el archivo app.config usando algo como:
Public Shared Property AppConfigSetting(ByVal SettingName As String) As Object
Get
Return My.Settings.PropertyValues(SettingName)
End Get
Set(ByVal value As Object)
Dim AppConfigFilename As String = String.Concat(System.Reflection.Assembly.GetExecutingAssembly.Location, ".config")
If (My.Computer.FileSystem.FileExists(AppConfigFilename)) Then
Dim AppSettingXPath As String = String.Concat("/configuration/applicationSettings/", My.Application.Info.AssemblyName, ".My.MySettings/setting[@name='", SettingName, "']/value")
Dim AppConfigXML As New System.Xml.XmlDataDocument
With AppConfigXML
.Load(AppConfigFilename)
Dim DataNode As System.Xml.XmlNode = .SelectSingleNode(AppSettingXPath)
If (DataNode Is Nothing) Then
Throw New Xml.XmlException(String.Format("Application setting not found ({0})!", AppSettingXPath))
Else
DataNode.InnerText = value.ToString
End If
.Save(AppConfigFilename)
End With
Else
Throw New IO.FileNotFoundException("App.Config file not found!", AppConfigFilename)
End If
End Set
End Property
Gracias por ese artículo. ¿Hay alguna manera de leer el valor de la configuración en el cuadro de texto de la acción personalizada? – Praveen