2008-10-30 3 views
14

Ich habe eine benutzerdefinierte Anwendung mit einer einfachen app.config SQL Server-Namen und Datenbank angeben, möchte ich den Benutzer zur Anwendungsinstallation für Anwendungskonfigurationselemente auffordern und aktualisieren Sie die App. Konfigurationsdatei.Setup App.Config als benutzerdefinierte Aktion im Setup-Projekt

Ich gebe zu, ich bin völlig neu zu Setup-Projekten und bin auf der Suche nach etwas Anleitung. Danke Mark Koops

Antwort

2

App.Config können geändert werden ... aber existiert es in einer Lage ähnlich heißt der durchschnittliche Benutzer HKEY___LOCAL_MACHINE hat nur Lesezugriff.

Also müssen Sie es als Administrator ändern - beste Zeit wäre während der Installation, wo Sie mit erweiterten Berechtigungen installieren sollen (soll).

So erstellen Sie eine Installer-Klasse, verwenden Sie eine benutzerdefinierte Aktion im Setup-Projekt, um die Benutzerauswahl (zB "/ svr = [SERVER]/db = [DB]/uilevel = [UILEVEL]") und, in das Afterinstall-Ereignis, um die Datei wie etwas mit App.Config ändern:

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 
Verwandte Themen