Deployment Setup App.Config作为安装项目中的自定义操作

Deployment Setup App.Config作为安装项目中的自定义操作,deployment,app-config,setup-project,Deployment,App Config,Setup Project,我有一个自定义应用程序,它有一个简单的app.config,指定SQL Server名称和数据库。我想在应用程序安装时提示用户应用程序配置项,然后更新app.config文件 我承认我对设置项目是完全陌生的,我正在寻找一些指导。 非常感谢。 Mark Koops检查此项-App.Config可以更改…但是它存在于类似于HKEY\uuuuu LOCAL\u机器的位置,即普通用户具有只读访问权限 因此,您需要以管理员身份对其进行更改—最好的时间是在安装期间,您(应该)在安装时使用增强的权限进行安装

我有一个自定义应用程序,它有一个简单的app.config,指定SQL Server名称和数据库。我想在应用程序安装时提示用户应用程序配置项,然后更新app.config文件

我承认我对设置项目是完全陌生的,我正在寻找一些指导。 非常感谢。
Mark Koops

检查此项-

App.Config可以更改…但是它存在于类似于HKEY\uuuuu LOCAL\u机器的位置,即普通用户具有只读访问权限

因此,您需要以管理员身份对其进行更改—最好的时间是在安装期间,您(应该)在安装时使用增强的权限进行安装

因此,创建一个安装程序类,在安装项目中使用自定义操作来传递用户的选择(例如“/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

我对Gulzar在64位机器上链接的代码有问题。我发现下面的链接是一个简单的解决方案,可以将配置ui中的值导入app.config


创建用于Visual Studio安装项目的自定义对话框:

谢谢你的文章。有没有办法在customAction的文本框中从配置中读取值?