Search Unity

P.A.T.C.H. - Ultimate Patching System

Discussion in 'Assets and Asset Store' started by ManHunterITA, Jul 20, 2015.

  1. ManHunterITA

    ManHunterITA

    Joined:
    Sep 3, 2013
    Posts:
    268
    Hi,

    currently P.A.T.C.H. doesn't support downgrading but of course you can modify it to fit with your needs. It should be relatively easy to do.
     
  2. Jayme65

    Jayme65

    Joined:
    Dec 11, 2016
    Posts:
    73
    Hi,
    I'm curious to know what is the impact of compression methods when using P.A.T.CH
    With compression method set to 'Default' my build weights 150Mo
    With compression method set to 'LZ4HC' my build weights 100Mo

    When I'll later update my project, will the behavior of PATCH be the same (will it download the same amount of updated data) according to the compression method used?

    Thanks
     
  3. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,033
    Any ETA yet on v3?
     
  4. spootymilk

    spootymilk

    Joined:
    Jun 9, 2017
    Posts:
    15
    Hi,
    since i upgrade to unity 2018.1, patch doesn't work at the compression process. Is there a solution ?
     
  5. Zante

    Zante

    Joined:
    Mar 29, 2008
    Posts:
    360
    This looks very interesting. How is it with the final version of Unity 2017?
     
    Last edited: May 18, 2018
  6. BlandonDu

    BlandonDu

    Joined:
    Dec 26, 2016
    Posts:
    9
    Hi ,
    Our game contents are deployed on cloud, include all downloadable files, if i upload all patches to the cloud, the download address will be a temporary and dynamic URL. which means that i can not specify the path for patches (maybe the version path could be ok,as it is only one file) for the sake of composite the address string up (i guess). I think this should be a common situation in consideration the mordern world of SAAS and clouds, fixed FTP address is expensive relatively.

    How do I set my patches URL (and related settings) in that case?? I can think of one way out if PATCH asked path for each of files, then I sure can manage to provide that URL by request from cloud host.

    Thanks
     
    zyzyx likes this.
  7. Ragoo

    Ragoo

    Joined:
    Feb 15, 2014
    Posts:
    68
    Hi @ManHunterITA , we are currently running into an issue where when installed in the Program Files directory, we run into a permission issue.

    P.A.T.C.H. appears to delete the "_tmp" folder fully, after recreating it and losing write permission in the process (we set up the "_tmp" folder with the right permissions using Inno with the installation process).

    How can we make P.A.T.C.H. not delete the entire folder? Could you potentially make a fix for this?

    Thanks
     
    ManHunterITA likes this.
  8. ManHunterITA

    ManHunterITA

    Joined:
    Sep 3, 2013
    Posts:
    268
    What if you run the Launcher with admin privileges? It should not require anymore writing permission to create a folder.
    You can do this with InnoSetup too!
     
  9. Zaeran

    Zaeran

    Joined:
    Dec 14, 2012
    Posts:
    11
    Hey there!

    I recently upgraded my launcher to Unity 2018.1.2f1, and it has lost the ability to self-update. I get the following error in the log:

    Sharing violation on path ...\globalgamemanagers.assets

    Edit: Downgrading back to Unity 2017 solves this issue
     
    Last edited: Jun 17, 2018
    gregwrogers and Legendxh like this.
  10. SlayerTheGod

    SlayerTheGod

    Joined:
    Aug 25, 2017
    Posts:
    3
    Hi @ManHunterITA.
    In November u told "NO".
    How about now?
    1) Does it supports mobile build patching i.e. Android and IOS?

    2) Does it supports asset bundle patching for Android and IOS too? I have the workflow that needs to build asset bundle and player downloads the asset bundle from server then the asset bundle will install at Application.persistentDataPath.
     
  11. gregwrogers

    gregwrogers

    Joined:
    May 26, 2017
    Posts:
    3
    I am having a similar issue to Zaeran above. I've been using P.A.T.C.H for a while with Unity 5.6.4 for an application. I'm getting a report from someone using the application that "Sharing violation on path" appears in the launcher when downloading the software and the download halts. This is the first time this has ever occurred while using P.A.T.C.H. for this application and I have not made any updates to P.A.T.C.H or Unity for the builds. Any insights to what might be causing this for the user?
     
  12. julianr

    julianr

    Joined:
    Jun 5, 2014
    Posts:
    1,111
    I think I had this issue once, so I kept my download as a separate download using an installer, but making sure that the index and version files are created and moved to their remote directories so it doesn't throw up any errors. Then create patches as normal and upload them. My 8GB build on my installed is then crunched down to 3.7 Gig.
     
  13. Zaeran

    Zaeran

    Joined:
    Dec 14, 2012
    Posts:
    11
    Having another interesting issue.

    When I build to 64bit, I get a 'Fatal Error in gc - GetThreadContext Failed' crash on some computers. It seems that this is something that's a problem with Unity itself, as the 32bit version is perfectly fine.
     
  14. Ibukii

    Ibukii

    Joined:
    Jun 23, 2016
    Posts:
    45
    Can I know if there is a function or a workaround to get the latest version? There's a function to get the current version but not the latest version.
     
  15. Roni92pl

    Roni92pl

    Joined:
    Jun 2, 2015
    Posts:
    290
    Hi, is this asset still supported? Last update was in 2016 which is worrisome. I need it to work with newest versions.
     
    zyzyx likes this.
  16. Thorgalson

    Thorgalson

    Joined:
    Mar 9, 2017
    Posts:
    8
    Hello, I'm a happy customer of your product and I'm planning on using it a lot. The way we use it is a C# tray application that runs in background and runs p.a.t.c.h once every week to see if the unity app need updating.

    I'm currently looking at the self update feature. would it apply in my case? Could you explain a little more as I'm not sure of the steps I see in the documentation. Right now, I'm only using build & patches folder. In my attached screenshot, qvr.exe is the unity app & valtechpatcher is the tray app.

    Thank you for your help

    Mykel
     

    Attached Files:

  17. julianr

    julianr

    Joined:
    Jun 5, 2014
    Posts:
    1,111
    It's a good asset, hopefully the developer is still working and supporting it.
     
  18. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,033
    What's the status of version 3? I've had my eye on this for a year, figured it would be out by now, and I really need to choose a patcher in a few weeks....
     
    shindig82 and zyzyx like this.
  19. ROBOTIS-Dev

    ROBOTIS-Dev

    Joined:
    Sep 10, 2013
    Posts:
    1
    When I run the launcher after building the launcher and the build program
    Downloading index file for repair process! It stops at.
    using FTP. Can you help me?
     
  20. Germes

    Germes

    Joined:
    Oct 27, 2016
    Posts:
    5
    May be you forgot ftp:// before your link? or set incorrect path to build?
     
  21. julianr

    julianr

    Joined:
    Jun 5, 2014
    Posts:
    1,111
    Also make sure you have a version file included in your build for patching, and also on your ftp hosting under your patches directory versions.txt
     
  22. ManHunterITA

    ManHunterITA

    Joined:
    Sep 3, 2013
    Posts:
    268
    I am sorry for the absence on the forum!
    I am still actively developing the 3.0.0 and I am documenting the process on P.A.T.C.H.'s Discord server!
    Here is a resume of what happened recently!

    Modules
    I highly modularized the whole P.A.T.C.H.'s code architecture. Now it has multiple libraries that contain general purpose, reusable features and multiple libraries that contain the P.A.T.C.H.'s core.
    Also, I did split up admin code from client code: now the client library does NOT contain any admin feature. Common parts are contained in a shared library.
    I also set up a "Server" module, to take it into consideration for the future PRO version.
    Another information: these general purpose libraries I built are publicly available on Nuget and GitHub. You can take a look to them if you like: https://github.com/manhunterita or search for "MHLab" on Nuget.

    Plugins
    One of these libraries I built is for plugins. It exposes a plugins system in P.A.T.C.H. and allows customers to write plugins and to customize the behavior of the P.A.T.C.H.'s engine with hooks and filters (something like Wordpress' plugins system).
    Simple example: before building files in your next version, P.A.T.C.H. will pass the retrieved files list to a filter. You can register methods to this filter and you can modify the files list that P.A.T.C.H. will compute. It is really simple to exclude files in this way and to customize the inner behavior!

    Pro version
    I am planning to build a Pro version that will include a server side. The server side will basically accept your game builds and will automatically build patches on demand, if they are not built yet.
    This will allow you to forget about patches and caring only about builds.
    Not only, this will allow your players to always download a single patch, regardless the version they have.
    If a customer has the version 1.0.2.34 and the latest version is 2.4.1.13, the server side will take care to build the patch if it is missing and will serve it to this customer.

    Localization
    I introduced a new localizations manager. Last time I delegated this task to an external plugin. This time it is built in a module. It is now publicly exposed to all libraries (admin, client, server, etc) and to all plugins, so every piece of this software now can be easily translated (starting from exceptions to UI text).
    I will try to attach a full list of strings to allow custom translations in multiple languages.
    I also planned to push the package and the documentation with translations in major languages (english, italian, german, russian, chinese, etc).

    New compression algorithm
    The previous version was built on top of ICSharpCode.SharpZipLib and it exposed some packaging/compression methods. But effectively, only ZIP method has been used by customers (and by me).
    That's why I decided to drop this lib and to use a single compression algorithm.
    Now P.A.T.C.H. uses a Brotli compressor/decompressor to compress/decompress all data that requires it.

    New build system
    Now P.A.T.C.H. can build your app versions in single, compressed archives without the need of storing/uploading hundreds of uncompressed files.
    Not only: it can now download single files from these compressed builds (so also the single file is already compressed). The new building system is already plugins-ready, so you can hook filters to modify which files it will compute. Also, it has the build-optimization always active: it can still refers to old versions for files who didn't change and the client side can retrieve them by downloading them from the older versions. This will cut off your build's size a lot!

    Misc
    A lot of additional things have been added/improved. But I don't remember what I exactly did in various iterations of the code. In general, there are some things to note.
    I improved some routines in the building process: removed the need of copying files from "current" folder to "builds" folder. It should improve the building time.
    The P.A.T.C.H. engine now has an async API and it is based on .NET Standard 2.0.
    A new way of signaling the progress has been introduced. Various custom classes have been dropped: now I use the .NET equivalent.
    All file extensions have been standardized. Index files now use a standardized file format (JSON).


    Well, it should be everything I can think about for this update.
    I will try to update this post more frequently.
    If you have questions, feel free to post here or to reach me out on Discord!
     
  23. xnooztvfr

    xnooztvfr

    Joined:
    Jul 31, 2013
    Posts:
    7
    Hello,
    I created a patch but on an old version of the game (0.0.0.0 to 0.0.0.1) the patch does not download and I can launch the game with the old version.
    I use th WPF Launcher and another bug, I can not start the game via the Launcher (file not found, the file name in the config file is the correct one)

    Can you help me please?
     
  24. Rockwall33

    Rockwall33

    Joined:
    Mar 4, 2016
    Posts:
    186
    Does PATCH support multi-game type launchers?

    Thank you!
    Xalo
     
  25. ManHunterITA

    ManHunterITA

    Joined:
    Sep 3, 2013
    Posts:
    268
    Hi,

    in the samples contained in the package there are no examples of multi-games launchers. By the way, you can edit it to support your multi-games architecture.
     
    Rockwall33 likes this.
  26. Rockwall33

    Rockwall33

    Joined:
    Mar 4, 2016
    Posts:
    186
    Thank you!!
     
  27. IAAAI

    IAAAI

    Joined:
    Oct 17, 2018
    Posts:
    9
    I could not find in the Manual...

    is there a way to have only one application that launches.
    It allrdy includes the Patcher but also the Application itself.
    On start or after patching it changes scenes instead of launching another application.

    LAUNCHER script: Is Integrated is an option but how do i use it?! :(
    Does the Deploy process change?

    The manual does not help or do i miss something?
     
  28. ManHunterITA

    ManHunterITA

    Joined:
    Sep 3, 2013
    Posts:
    268
    Hi, there is a specific section in the manual for this. It is named "Embedding the patcher in your game". Check it out: http://mhlab.altervista.org/p-a-t-c-h-documentation/

    ________________________________________

    I recently pushed an update on the Store (2.1.3). It contains bugfixes for some of major bugs all you guys reported over months.
    I didn't solve all of them, but I planned additional releases to fix all reported bugs before the major release (3.0.0).
    Currently I am solving some compatibility issues with new versions of Unity, so expect another update in next couple of days (2.1.4).

    For you convenience, I started a GitHub repo for P.A.T.C.H.: it will act as issues tracker, I will build a wiki on it and I will share material if any.
    Here it is: https://github.com/manhunterita/PATCH
    If you want to report bugs, feel free to add them to the issues tracker. It will help me to catch all of them easily!

    Stay tuned.
     
    julianr likes this.
  29. tjlillo

    tjlillo

    Joined:
    Jun 12, 2018
    Posts:
    5
    Is there mobile support?
     
  30. ManHunterITA

    ManHunterITA

    Joined:
    Sep 3, 2013
    Posts:
    268
    Not yet and I didn't plan it in short term. I am focusing on desktop platforms with new update.
     
  31. ManHunterITA

    ManHunterITA

    Joined:
    Sep 3, 2013
    Posts:
    268
    Anyway, 2.1.4 pushed and it is on pending review!
    You can check what I included in the update here: https://github.com/manhunterita/PATCH/projects/1

    Or here:
    • CORE: fixed the way builds and patches are generated to match with Unity's builds output
    • CORE: fixed a path combining bug on MacOS for installer/repairer
    • CORE: improved some log messages in order to offer a better support
    • LAUNCHER: when embedded, the launcher's dirty flag is always set after an update
     
    Last edited: Nov 12, 2018
    julianr likes this.
  32. julianr

    julianr

    Joined:
    Jun 5, 2014
    Posts:
    1,111
    2017.x not supported any more? Min download requirement is 2018.x now.
     
  33. ManHunterITA

    ManHunterITA

    Joined:
    Sep 3, 2013
    Posts:
    268
    Yeah, it is supported.
    I just pushed it with 2018 only. Let me push it with 2017 too! :)
     
  34. ManHunterITA

    ManHunterITA

    Joined:
    Sep 3, 2013
    Posts:
    268
    Uhm, I am having problems with 2017 Asset Store Publishing Tool :mad:
    I pushed the 2.1.5 with 2018, it contains an hotfix for the 2.1.4.
     
  35. jthevenot

    jthevenot

    Joined:
    Aug 29, 2018
    Posts:
    2
    When using a unity standalone installer that I want auto updated, I put the installer into PATCH/patcher. But when creating a version I get the error "... UnityCrashHandler64.exe already exists ...". This seems to be because the players no longer only create a .exe and a directory (https://forum.unity.com/threads/not...e-in-unity-2018-1-beta-9.520088/#post-3413260). The new extra unity files for the patcher are conflicting with the the current build files. Am I doing something wrong or is there a work around?
     
    ManHunterITA likes this.
  36. kersk

    kersk

    Joined:
    Jan 2, 2012
    Posts:
    56
    Is there support for patching the patcher itself? So that custom changes to the launcher itself can be rolled out to users in addition to normal game patches?
     
    ManHunterITA likes this.
  37. ManHunterITA

    ManHunterITA

    Joined:
    Sep 3, 2013
    Posts:
    268
    Yeah, I released a patch (2.1.5) to solve the naming conflict. A simple workaround, anyway, is to create an additional folder in your "current" directory when you create a new build (so it is like: "current/MyGame") and put your game in this new folder.

    Yeah, sure: read the doc. It is explained in a chapter!
     
    jthevenot likes this.
  38. jthevenot

    jthevenot

    Joined:
    Aug 29, 2018
    Posts:
    2
    For anybody that also had the same problems: after putting my build in a sub-directory as recommended above I was able to build a self updating separate Unity patch program along with my Unity program. The problem is that 2018 now locks the file(s) globalgamemanagers so that you can't actually self update. So I created the patch program in 2017 and my program in 2018 and it worked well after I also updated the patch program to set SettingsManager.APP_PATH to the directory above where the patch program is. I also had to recreate the progress bars in 2017 since the asset would only download into 2018 versions, for me at least. This gives me a working system that I can now modify however I want.

    Overall, this asset is showing its age since Unity 2018 introduced a lot of changes which cause problems with this version if you want to use a separate self updating patch program in Unity. The author is actively working on the next version rather than focusing lots of time to patch these issues directly and update the docs. This is correct in my view since there are viable workarounds right now and the author has created updates where workarounds didn't exist. Also, you could always use the windows patch examples rather than the Unity ones, or embed patching inside your program. Further, all these issues vanish as soon as the next version is finished up.

    I have no regrets buying this asset and eagerly await future updates. There is also support and more info available on discord for people looking for it.
     
    ManHunterITA likes this.
  39. Devision4

    Devision4

    Joined:
    Jan 12, 2013
    Posts:
    1,329
    So asset does not work with unity 2018?
     
    ManHunterITA likes this.
  40. Kytestar

    Kytestar

    Joined:
    Oct 9, 2018
    Posts:
    5
    I am using Unity 2018.2.18f1 and it works fine so far. Have uploaded a build to my server, created a launcher and it downloaded the build.

    I am getting an error with it not being able to find a version.txt file but I haven't actually uploaded any patches, just the main build. Not sure how to fix this atm.
     
    ManHunterITA likes this.
  41. ManHunterITA

    ManHunterITA

    Joined:
    Sep 3, 2013
    Posts:
    268
    It does. For any issue, feel free to contact me or open an issue on GitHub! I will be happy to solve it as soon as possible!
    Just upload your versions.txt file too, also if it is empty! :D
     
  42. Kytestar

    Kytestar

    Joined:
    Oct 9, 2018
    Posts:
    5
    Heys again.

    Is it possible to run the launcher windowed. The full screen is fine, but I would rather it ran in a window (MMO's seem to also have a launcher that is windowed). Note: Found out how to do most of this via the Player Settings. Still cannot get borderless window (I am sure I can solve this one)

    Also, it is possible to have the build install location defined by the user rather than having it always go into a selected directory. The game I am building which will use the p.a.t.c.h launcher will be many gb's in size and people with SSD drives tend to try to put larger installs on other drives. If they are limited to it being on the C: drive by default it may put them off.

    Cheers
    Steve
     
    Last edited: Dec 8, 2018
    ManHunterITA likes this.
  43. ManHunterITA

    ManHunterITA

    Joined:
    Sep 3, 2013
    Posts:
    268
    Yeah, it is possible to run the launcher windowed. That's just matter of settings you use when you build it.

    It is also possible to set a user defined target directory, but this is a feature you have to code yourself. You can overwrite the path location in SettingsManager static fields.
    I think I will include this feature in the next release.
     
  44. SharkTeam

    SharkTeam

    Joined:
    Jan 28, 2016
    Posts:
    7
    Hello, i have a simple question :)

    Is it possible for P.A.T.C.H. to work with Steam store? I would like to upload only first version with launcher on Steam store and then do the installs and updates through P.A.T.C.H.

    Thank you in advance for your support.
     
    ManHunterITA likes this.
  45. ManHunterITA

    ManHunterITA

    Joined:
    Sep 3, 2013
    Posts:
    268
    Hi.
    Yeah, it is totally possible to work with Steam like this (atleast on P.A.T.C.H.'s technical side I can't see any limitations). Just make sure to check Steam's policy about this topic and about updates delivered with external systems.
     
  46. Kytestar

    Kytestar

    Joined:
    Oct 9, 2018
    Posts:
    5
    Heys again.

    I did initially ask about borderless windows on the launcher, but I managed to get this working by implementing a few more scripts and modifying the launcher.cs

    Couple of questions about the launcher design. I have modified it quite a bit so maybe I have knocked something out of place in a few areas.

    1. I cannot seem to get anything moving on the progress bar (there is text, but not actually a moving block showing completion). The second progress bar (bottom one) just sits at 100% permanently (is this for something else, other than the initial download).

    2. The close button does not work. I have checked that the script is still attached (the OnClick) and it is there, but the launcher window does not close when the close button is clicked.

    3. Once my download has finished (initial download of the game), the game does not start and shows this -> Installation Failed and the message Installation Failed, no versions installed.

    I checked my version file path which is located in the 0.0.0.0 directory but it does not seem to work and the log shows -> version file skipped.

    Any help always appreciated
    Steve
     
    Last edited: Dec 12, 2018
    ManHunterITA likes this.
  47. Andreas12345

    Andreas12345

    Joined:
    Oct 17, 2013
    Posts:
    395
    problems after install: .NET 2.0 is set in ProjectSettings:player
    I use: 2018.3.0f2
     

    Attached Files:

    ManHunterITA likes this.
  48. ManHunterITA

    ManHunterITA

    Joined:
    Sep 3, 2013
    Posts:
    268
    1. It is a known bug with progress bars: their value is wrongly set.
    2. Uhm, I'll check it.
    3. Can you provide me logs from launcher and from Unity Player?

    Uhm, Unity introduced a CompressionType enum too. This conflicts with my own. I think I will have to explicitly declare the namespace on those lines.
     
  49. Andreas12345

    Andreas12345

    Joined:
    Oct 17, 2013
    Posts:
    395
    still problems when i will import the asset.
    Please help
     

    Attached Files:

    • mhl.PNG
      mhl.PNG
      File size:
      72.4 KB
      Views:
      318
    • mhl2.PNG
      mhl2.PNG
      File size:
      82.6 KB
      Views:
      405
  50. Fured

    Fured

    Joined:
    Jul 3, 2014
    Posts:
    3
    Hello everyone..

    So here is the issue I am having this issue where the PATCH builder will create a folder called "GAME" inside of the Builds\0.0.0.0 ..
    Resulting in version file to not be in the same location as my launching , then causing any attempts of update to fail with the Message "Local version checking error , please check your version file" ...

    I tried to remove the "Game" folder but then the Index file is missmatched causing errors too..

    I just upgraded to the Pro version ..

    Any idea on why this Builds\0.0.0.0\Game folder is being created ?

    Thanks for your work !