Автообновление программы - VB

Узнай цену своей работы

Формулировка задачи:

Коллеги прошу помочь. Два вопроса, оба касаются механизма автообновления программы:

Вопрос №1

Есть программа №1. (Loader), который в свою очередь загружает программу №2 (Main). При этом №1 (Loader) проверяет наличие в памяти программы №2 (Main). Если есть, то отказ если нет, то грузит ее и выгружается сам. В какой то момент времени программе №2 (Main) приходится загрузить программу №1. (Loader) и выгрузится самой из памяти. Программа №1. (Loader), естественно в момент загрузки видит в памяти еще не выгруженную программу №2. (Main) и сообщает, что программа в памяти и не грузит ее. Решаю это запуском программы №1 из программы №2 путем формирования из программы №2 CMD файла. Вопрос как обойтись без CMD? Для чего все так сложно? Не понимаю как без Лоадера организовать проверку "загружена ли программа", так как в момент запуска ПРОГРАММА видит сама себя в памяти.

Вопрос №2

Как перезагрузить программу из самой программы. Вариант Unload? а затем Show не дает результата?

Решение задачи: «Автообновление программы»

textual
Листинг программы
Private Sub Command1_Click() ' запуск процедуры обновления
 Name App.Path & "\Name.exe" As App.Path & "\Name.old" 'Переименовываем старый файл
If Dir(App.Path & "\Name.old") <> "" Then                         ' Если переименовали успешно
        'Тут ваш код или вызов процедуры, котрый скачивает обновление
        'если скачали-> тут могут быть проверки, что файл в полном обьеме, то запускаем обновленный файл
                Shell App.Path & "\Name.exe"
       'и убиваем себя
        End ' или другим, более цивилизованным способом, предварительно сохранив старые настройки, если надо
        
    Else
        MsgBox "Обновление невозможно."
    End If
End Sub

Оцени полезность:

5   голосов , оценка 3.6 из 5
Похожие ответы