How does an application launcher update itself?

前端 未结 3 1361
情书的邮戳
情书的邮戳 2021-02-02 12:24

Launchers are most common in games. Think of League of Legends, Starcraft II, or almost any MMO out there. Before starting the actual game, you have a small launcher app that ta

相关标签:
3条回答
  • 2021-02-02 13:13

    Basically the launcher checks to see if there is a newer version of it self, and if so kicks off a task to get the new version and then executes it and then closes.

    Given the updater app is small and loads up quick, you can have it detect, download, stick up a dialog to say there's a new version, and barely flicker as the old version closes and the new one runs up.

    0 讨论(0)
  • 2021-02-02 13:14

    I've never tried, but this is what I would guess (assuming you can't overwrite a file being executed. If you can, this is all simpler)

    Updater A checks if its the newest version
    If launcher isnt the newest version
        Download the differences (to save bandwidth) to file B
        Apply the delta to own code into file C
        Launch file C.
        Close
    If file C exists (update happened recently)
        Try to delete C  (update was previous launch, delete temporary file)
        If delete fails  (We are C, means A is out of date)
            Copy C over A  (update launcher)
            Note that you can keep going, dont have to restart even though we are C.
    If game isnt newest version
        Download the differences (to save bandwidth) to file B
        Apply the delta to game into file D
        delete game
        Rename D -> game
    Run game
    

    André Caron has shown me that the swap trick is done better with transactional file IO.

    0 讨论(0)
  • 2021-02-02 13:20

    If you are in the .NET world, there is a deployment strategy called 'Click Once'. This was created to solve the problem you have described...

    ClickOnce is a deployment technology that allows you to create self-updating Windows-based applications that can be installed and run with minimal user interaction. ClickOnce deployment overcomes three major issues inherent in deployment:

    Source: Click Once

    Before embarking on this strategy, I suggest researching its pros and cons because there are avid fans and detractors.

    Briefly, you upload new versions to a web site (which the application is configured to know about). At start up time, the application checks the site and if there's an update offers the user a dialog. When the user elects to apply the update, the application is stopped and simultaneously a 'click once' component is activated to apply the changes. The component then restarts the executable and this all appears as a seamless operation to the end user...

    0 讨论(0)
提交回复
热议问题