Как сохранить / восстановить папку

В настоящее время я учу себя (с помощью SO & Google) VB.Net создавать лаунчер для многопользовательского мода, и мне нужно, чтобы пользователи при первом запуске моего приложения указывали, где хранится их папка;

Dim folderDlg As System.Windows.Forms.FolderBrowserDialog
    folderDlg = New System.Windows.Forms.FolderBrowserDialog
    folderDlg.Description = "Please select your multiplayer folder"


    If My.Settings.isFirstRun Then
        My.Settings.isFirstRun = False
        My.Settings.Save()
        folderDlg.ShowDialog()
    Else

    End If

Кнопка для запуска самого мода

    Private Sub Launch_mp_Click(sender As Object, e As EventArgs) Handles Launch_mp.Click
    If My.Computer.FileSystem.FileExists("launcher.exe") Then
        Process.Start("launcher.exe")
        Timer2.Interval = 1000
        Timer2.Start()
    End If
End Sub

Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
    p = Process.GetProcessesByName("eurotrucks2")
    If p.Count > 0 Then
        Timer2.Stop()
        Me.WindowState = FormWindowState.Minimized
        Me.Visible = True
    Else
    End If
End Sub

Я запутался в том, как я могу сохранить выбранный пользователем путь и затем вызвать его позже для кнопки, не всегда спрашивая dir.

1 ответ

Решение

Вы почти там:

У вас есть различные варианты хранения информации: реестр, старый стиль с использованием ini-файлов или в конфигурационном файле вашего приложения. Я бы предложил использовать файл конфигурации, так как вы уже храните isFirstRun-varialbe в конфигурации. В проекте explrorer посмотрите на папку "Мой проект" и дважды щелкните по пункту "Настройки". Добавьте параметр типа string с именем "ModFolder". После этого вы сможете получить доступ к значению этого параметра, используя MyialSettings.ModFolder varialbe (см. Здесь).

Используйте FolderBrowserDialog для хранения папки (см. Здесь)

if folderDlg.ShowDialog() = DialogResult.Ok then 
   My.Settings.ModFoler = folderDlg.SelectedPath
   My.Settings.Save
end if

Когда ваше приложение запустится в следующий раз, переменная ModFolder будет автоматически хранить сохраненное значение, а не If My.Settings.isFirstRun Then Я бы проверил:

If File.Exists(Path.Combine(My.Settings.ModFolder, "AppToStart.Exe")) then
...
end if

Если файл существует, запустите его, если нет, снова откройте диалоговое окно, чтобы выбрать папку.

Другие вопросы по тегам