read keys from example applicationsettings app deployment app-config setup-project

deployment - keys - Configurar App.Config como acción personalizada en el proyecto de instalación



configurationmanager appsettings app config (4)

Tengo una aplicación personalizada con una aplicación simple.config que especifica el nombre y la base de datos del Servidor SQL. Deseo solicitarle al usuario que instale la aplicación para los elementos de configuración de la aplicación y luego actualice el archivo app.config.

Admito que soy totalmente nuevo para configurar proyectos y estoy buscando orientación. Gracias Mark Koops



App.Config PUEDE cambiarse ... sin embargo, existe en una ubicación similar a HKEY___LOCAL_MACHINE, es decir, el usuario promedio tiene acceso de solo lectura.

Por lo tanto, deberá 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 Installer, use una acción personalizada en el proyecto de instalación para pasar las elecciones del usuario (por ejemplo, "/ svr = [SERVER] / db = [DB] / uilevel = [UILEVEL]") y, en el evento AfterInstall, 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