在已部署的应用程序中自动创建user.config文件

时间:2016-03-01 09:26:58

标签: vb.net clickonce my.settings user.config autocreate

我正在编写一个VB.Net AddIn for outlook(因此它的VBA带有.NET)。它是标准Calender Item屏幕的补充。一切都很顺利。但我有一个带有两个文本框的第三个表单,它显示running assemblyuser.config路径的文件路径,其中包含两个按钮"Open in Explorer..."

BUT: user.config文件不在开头。当我更改第二个表单中的设置并首次保存时,将创建父目录及其自身。

我尝试使用My.Settings.save()在我的主窗体的form_Initialization方法上保存用户设置,但它不会生成奇怪的user.config文件。那应该和我在第二种形式上做的一样。

你能帮帮我吗?我需要在第三个表单开头的user.config文件。

My Forms (Image)

生成user.config文件的代码:

Private Sub BtnSaveSettings_Click(sender As Object, e As EventArgs)
        If (CmbxDebugOption.Text <> "") And (CmbxOnBootActive.Text <> "") Then

            ' save active start option
            If CmbxOnBootActive.SelectedItem.ToString.ToLower = "ja" Then
                My.Settings.ActiveOnStart = True
            ElseIf CmbxOnBootActive.SelectedItem.ToString.ToLower = "nein" Then
                My.Settings.ActiveOnStart = False
            End If

            ' save debug option
            If CmbxDebugOption.SelectedItem.ToString.ToLower = "deaktiviert" Then
                My.Settings.AlwaysDebug = False
                My.Settings.OnetimeDebug = False
            ElseIf CmbxDebugOption.SelectedItem.ToString.ToLower = "nur einmal" Then
                My.Settings.AlwaysDebug = False
                My.Settings.OnetimeDebug = True
            ElseIf CmbxDebugOption.SelectedItem.ToString.ToLower = "immer aktiv" Then
                My.Settings.AlwaysDebug = True
                My.Settings.OnetimeDebug = False
            End If
            My.Settings.Save()
        End If

        ' Close Form
        Me.Close()
    End Sub

1 个答案:

答案 0 :(得分:1)

我找到了自己的解决方案。我在My.Settings中创建了一个名为FirstRunAfterInstall的变量,我在mainform的第一次运行时将其设置为False。我还将其他变量设置为默认值,然后保存整个混乱。然后该文件将写入您的硬盘。

看起来像这样:

    If My.Settings.FirstRunAfterInstall Then
        My.Settings.FirstRunAfterInstall = False
        My.Settings.ActiveOnStart = False
        My.Settings.OnetimeDebug = False
        My.Settings.AlwaysDebug = False
        My.Settings.Save()
    End If

My.Settings.Save()是最重要的部分!它会刷新一些缓存。如果您忘记了此部分,则更改将不会写入文件。

来自德国的问候,

Christian Hase