Выдать сообщение пользователю, которого нет в приложении - PullRequest
0 голосов
/ 14 декабря 2011

У нас есть два приложения.

  1. Main.exe - основного обновляемого приложения
  2. Update.exe - программа, которая запускает обновление Main.exe

Моя проблемапредотвращает доступ пользователей к файлу main.exe во время обновления.

Сейчас я проверяю файл флага, и если файл флага существует, немедленно выполняется application.exe.

Это нормальнокроме того, что он ничего не говорит пользователю, просто выгоняет его.

Я должен был выпустить сообщение, время, которое требуется им для ответа на сообщение, main.exe используется и не можетбыть обновленным.

Любые предложения, как я могу профессионально отобразить сообщение о том, что обновление выполняется, закрытие приложения?

Кстати, я подумал об использовании:

Private Function IsUpdatingPropane() As Boolean
    Try
        Dim UpdateInprocess As String = My.Computer.FileSystem.GetParentPath(Application.StartupPath) & "\update.inprocess"
        If File.Exists(UpdateInprocess) Then

            'Dim Proc As Process
            'Dim ProcInfo As New ProcessStartInfo(Configuration.DataFileLocations & Configuration.GasLibrary & "\vbmsg.exe")
            'ProcInfo.Arguments = String.Format("vbmsg.txt,{0},{1},NIL,NIL,NIL,OK,9996,9997", Configuration.UserId, Configuration.WorkstationId)
            'ProcInfo.WindowStyle = ProcessWindowStyle.Normal
            'ProcInfo.WorkingDirectory = Configuration.DataFileLocations & Configuration.GasLibrary
            'ProcInfo.UseShellExecute = False
            'Proc = Process.Start(ProcInfo)


            Application.Exit()
            Return True
        End If
        Return False
    Catch ex As Exception
        WriteException(ex)
        WriteDebugInfo("VerifyNotUpdatingPropane", "An error occurred while checking for update.inprocess file. Please contact SSS for assistance.", True, ex)
        Return True
    End Try
End Function

но что мне звонить, чтобы отобразить сообщение?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 14 декабря 2011

С учетом имеющихся у нас данных

  1. Main.exe
  2. Updater.exe

По запросу на обновление от Main.exe запускается Main.exeUpdater.exe конец убивает себя.Updater.exe делает все это.Для решения проблемы уведомления в случае, когда пользователь снова нажимает Main.exe, вы можете, например, запустить второй экземпляр Updater.exe с некоторым специальным параметром, который фактически отображает сообщение и выходит из Main.exe.В этом случае, даже если пользователь не будет закрывать диалоговое окно уведомления на некоторое время (пауза кофе), у вас в памяти будет современник 2 экземпляров Updater.exe.Один обновляется, второй просто показывает сообщение, и одно закрытое сообщение покидает память.

Короче говоря, переместите визуализацию сообщения внутри самого Updater.exe, которая появляется только в случае наличия специального параметра командной строки.

Надеюсь, это поможет.

1 голос
/ 14 декабря 2011

Существует несколько возможных решений этой проблемы, в том числе:

  1. Создайте простое приложение начальной загрузки, которое проверяет файл флага и, если он не существует, запускает main.exe.,В противном случае подскажите пользователю свою ошибку.Это работает только в том случае, если вам никогда не нужно обновлять загрузчик.

  2. Используйте теневую копию AppDomain, чтобы предоставить пользователям доступ к вашему приложению во время его обновления, а затем, когда оно будет завершено, предложите им перезагрузитьобновленные файлы будут перезаписывать "активные".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...