Настройка App.Config как пользовательское действие в проекте установки
У меня есть настраиваемое приложение с простым app.config с указанием имени и базы данных SQL Server, я хочу предложить пользователю установить приложение для элементов конфигурации приложения, а затем обновить файл app.config.
Я признаю, что я совершенно не новичок в настройке проектов, и я ищу некоторые рекомендации.
Спасибо
Марк Купс
Ответы
Ответ 1
У меня были проблемы с кодом Gulzar, связанным с 64-битной машиной. Я нашел ссылку ниже как простое решение для получения значений из config ui в app.config.
http://raquila.com/software/configure-app-config-application-settings-during-msi-install/
Ответ 2
проверить это - Установщик с настраиваемым действием для изменения настроек
Ответ 3
App.Config МОЖЕТ быть изменен... однако он существует в местоположении, близком к HKEY___LOCAL_MACHINE, то есть средний пользователь имеет доступ только для чтения.
Итак, вам нужно будет изменить его как администратора - лучшее время будет при установке, где вы (предположительно) должны быть установлены с расширенными разрешениями.
Итак, создайте класс Installer, используйте пользовательское действие в проекте установки для передачи в пользовательских вариантах (например, "/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
Ответ 4
Создайте настраиваемые диалоги для использования в ваших проектах установки Visual Studio:
http://www.codeproject.com/Articles/18834/Create-custom-dialogs-for-use-in-your-Visual-Studi