Настройте App.Config как пользовательское действие в проекте установки - PullRequest
14 голосов
/ 30 октября 2008

У меня есть пользовательское приложение с простым app.config с указанием имени и базы данных SQL Server, я хочу предложить пользователю при установке приложения указать элементы конфигурации приложения, а затем обновить файл app.config.

Признаюсь, я совершенно новичок в настройке проектов и ищу несколько советов. Благодарю вас Марк Купс

Ответы [ 4 ]

8 голосов
/ 23 февраля 2009

У меня были проблемы с кодом, с которым связывался Гульзар на 64-битной машине. Я нашел ссылку ниже, чтобы быть простым решением для получения значений из пользовательского интерфейса конфигурации в app.config.

http://raquila.com/software/configure-app-config-application-settings-during-msi-install/

4 голосов
/ 30 октября 2008
2 голосов
/ 26 ноября 2008

App.Config МОЖЕТ быть изменен ... однако он существует в месте, похожем на HKEY___LOCAL_MACHINE, т. Е. Обычный пользователь имеет доступ только для чтения.

Таким образом, вам нужно будет изменить его как администратора - лучшее время будет во время установки, когда вы (как предполагается) выполняете установку с расширенными разрешениями.

Итак, создайте класс Installer, используйте Custom Action в проекте установки, чтобы передать выбор пользователя (например, "/ svr = [SERVER] / db = [DB] / uilevel = [UILEVEL]") и, в Событие AfterInstall, измените файл App.Config, используя что-то вроде:

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
0 голосов
/ 22 марта 2012

Создание пользовательских диалогов для использования в ваших проектах установки Visual Studio: http://www.codeproject.com/Articles/18834/Create-custom-dialogs-for-use-in-your-Visual-Studi

...