Code Monkey home page Code Monkey logo

patch's Introduction

PATCH

What is PATCH?

PATCH is a rock-solid, professional, all-in-one, smart and clean solution for managing your game's updates!

Your players can finally update their copies of your game with no pain or headaches, without having to download the whole game again when a new version comes. This will save them a lot of bandwidth and time!

It comes with Unity integration, but even with standalone tools: you can use it with every game engine.

Take a look at it here: https://assetstore.unity.com/packages/tools/utilities/patch-updating-system-basic-41417

Why this repository?

This repository is intended to be used for issues tracking, wiki and shared material/knowledge about PATCH. Also this will allow the community to better interact with me and to communicate/report issues.

Current Admin Tool preview

Admin Tool Preview

patch's People

Contributors

emanzione avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

patch's Issues

Create the Builds page in Admin Tool

Create the Builds page in Admin Tool. It should display:

  • a way to check current game version's files
  • a way to build the current game version's selected files

Tortoise SVN unable to commit asset files

Recently purchased the editor extension and need to include it in our repo.
Unity2018.2.10f1, Windows 10, building for PC and (in the future if we ever get to it) iOS, using Subversion for version control (client: TortoiseSVN).

However, using Tortoise SVN, I am getting the following error when trying to commit the entire MHLab folder:
subversion-patch-issue-01

Addendum2:
I have isolated the error to these three files. All progressbar prefabs.
subversion-patch-issue-04

Weirdly enough, after the first time this error occurred, some files were set from "non-versioned" to "added" and committed just fine. I am, however, stuck with the non-versioned files. Just in case you can tell anything from the file list:

subversion-patch-issue-02

Addendum0:
After some mucking about, trying to manually add all the non-versioned files, TortoiseSVN showed some more information about the files affected:
subversion-patch-issue-03

It seems this has something to do with the scenes.

Addendum1:
Oooooooor maybe not. The Progressbar.prefab seems to be the culprit here.
subversion-patch-issue-01

Create a builds cache

Create a builds cache to store uncompressed builds data and files. This will be stored in a separate folder from the "Deploy" one, so it will not be uploaded and it will be local.
The purpose is to speed up patches creation and builds recomputation when deleting builds.

Rollback Feature

If a user is on a version newer than what's available in patches_index (ie the developer wants to rollback), have the option to choose to "rollback" to the newest available build (zipped would be nice!) and patch up again to the most recent available patch.

The locally built web service and the problem of 404 has been displayed.

I use a locally built web service for testing, and it always shows 404 problems. Please help solve them. Thank you.
my url:
http://127.0.0.1/patch/patches/versions.txt
http://127.0.0.1/patch/patches/
http://127.0.0.1/patch/builds/

image
Error:
System.Net.WebException: The remote server returned an error: (404) Not Found.
at System.Net.HttpWebRequest.CheckFinalStatus (System.Net.WebAsyncResult result) [0x00000] in :0
at System.Net.HttpWebRequest.SetResponseData (System.Net.WebConnectionData data) [0x00000] in :0
UnityEngine.Debug:LogError(Object)
c__AnonStorey2D:<>m__35(ActionThread) (at Assets/MHLab/PATCH/Source/Core/Utilities/Threading/UnityThreadHelper.cs:118)
UnityThreading.ActionThread:Do() (at Assets/MHLab/PATCH/Source/Core/Utilities/Threading/Thread.cs:326)
UnityThreading.ThreadBase:DoInternal() (at Assets/MHLab/PATCH/Source/Core/Utilities/Threading/Thread.cs:231)

Mac Updater Zip Error

Error.txt

The problem is that since the source code was created by a third-party application, the ZIP either cannot get full access to it for some reason
The solution is to copy all the files of the source package to the temp directory and already perform all operations with this copy, including archiving
The method of copying files can be used the same as in BuildBuilder.cs

Launcher not updating

``before:
image

while running the update:
Inked161442695-32909434-88d5-4a58-b588-a8c5e037254b_LI

After the launcher closes itself
image
(these files are not getting replaced and the launcher wont start until i manually remove the original file and rename the new one

Log:

Launcher update started. The update contains 10 operations.
Updating process FAILED!
The URL https://XXX.net/XXX/patch/Updater/ForgottenBarrageLauncher.pdb generated an exception.
   at MHLab.Patch.Core.Client.IO.FileDownloader.Download(String url, String destFolder, Action`1 onChunkDownloaded)
   at MHLab.Patch.Core.Client.PatcherUpdater.HandleAddedFile(UpdaterDefinitionEntry entry)
   at MHLab.Patch.Core.Client.PatcherUpdater.HandleUpdate()
   at MHLab.Patch.Core.Client.PatcherUpdater.Update()
   at MHLab.Patch.Core.Client.Runners.UpdateRunner.Update()
   at MHLab.Patch.Core.Client.UpdatingContext.Update()
   at MHLab.Patch.Launcher.Wpf.MainWindow.CheckForUpdates()

Question: I dont event have the file mentioned in my log. How do i get that? https://XXX.net/XXX/patch/Updater/ForgottenBarrageLauncher.pdb

My Web directory:
image

Contents of the zip file:
image

Add url for debugging purposes

Hi

Using PATCH v 2.2.0.

Can you please add the url to the stacktrace for debugging purposes? I am having troubles with my launcher updates, they are getting an error 404. I would like to know, which url they attempt to connect to.

image

caw file generated an exception

Hello,

I am experiencing a very weird issue when installing the game from the launcher, it fails every time on 93% with the same file generating an exception

another weird thing is that the GI folder has a "level2" folder in this, which is different from the "level1" folder I have when I build the game outside of PATCH, with Unity only.

here is the log file from the launcher:

2020-12-12 23:20:40.660 +02:00 [INF] ===> [Game updating] process STARTED! <===
2020-12-12 23:20:40.887 +02:00 [INF] Update context initializing...
2020-12-12 23:20:40.888 +02:00 [INF] Update context points to http://patch
2020-12-12 23:20:40.889 +02:00 [WRN] No current version found. A full repair may be required.
2020-12-12 23:20:40.892 +02:00 [INF] Workspace cleaned. Removed 0 files
2020-12-12 23:20:42.322 +02:00 [WRN] No patches index found.
2020-12-12 23:20:42.478 +02:00 [INF] Collected 161 local files.
2020-12-12 23:20:42.485 +02:00 [INF] Retrieved definition for 0.1.1
2020-12-12 23:20:42.486 +02:00 [INF] Found 0 applicable updates.
2020-12-12 23:20:42.486 +02:00 [INF] Update context completed initialization.
2020-12-12 23:20:42.490 +02:00 [INF] Repairing process started.
2020-12-12 23:21:03.676 +02:00 [ERR] ===> [Game updating] process FAILED! <=== - The URL http://patch/Builds/0.1.1/Game/The Middle Ages_Data/GI/level2/08/08771a4d2e67ae722f9ceb7272f75959.caw generated an exception.

[Bug] Hosting build under IIS reveals a lack of flexibility

Generating "Build" copies all files in bulk with the same structure and names as the original folder. When build Unity project to standalone target it creates such files like "...\Mono\etc\mono\2.0\web.config" which is IIS configuration file. And when trying to download this (and some other files) client get response code of 500. In turn patches are zipped in one file with popular ".zip" extensions which does not creates any problems when downloading them.

My suggestion is to use the same mechanism (or similar) when creating "builds". Files can still be copied separately - which ensures trouble-free downloading each individual - but on server side files can be zipped or at least extensions can be suffixed witch something like ".zip" and just removed/decompressed on client side.

Patch progress lost

I backed up my complete project, made a script upgrade due to an old api version of an imported asset (which broke my project so i restored it from my backup), opened it and now my PATCH Admin window shows me, that i need to create an inital build.
I have my old (broken) project folder still on my harddrive. where are "settings" for patch located, so i can restore them?

Unauthorized exception when trying to download a JSON

We use an s3 bucket with authentication, but when trying to download a JSON file using 'DownloadsManager.DownloadString' I get an (401) Unauthorized exception. In the 'FileDownloader' you have the credentials exposed, but the 'DownloadsManager' does not make use of these credentials.

Custom Game Path

Would it be possible to have the option to change the game folder ?

For compatibility reason with my existing user base, I'd like to be able to have : "C:\MyTest" = my game ; "C:\MyTest\Launcher" = Launcher . (in that case, the patcher shouldn't delete the "Launcher" subfolder when repairing the game ;-) )

On Mac, putting it in a subfolder or in the same folder might not work (because it may require admin rights), so it would be good to be able to specify "~/Documents/MyGame" or something similar, or even the Launcher's Application.persistentDataPath folder (eg: "%LauncherData%/MyGame").

UnityPlayer.dll collision in standalone Launcher

The way Unity generates the output build has changed. Now various files are stored in the same folder of the Launcher/Game executable.
This creates a collision among these files and everything breaks.

Cancel Method in the Runner

Hello,

In order to add a cancel button during the download, I would like to have a method to cancel/stop the Runner.

Thanks

Release note / Version management

is it possible to add a system to manage release note linked to a build version ?
In addition I would like to display in my game the build version managed by the patcher.

Nixou

Create the Dashboard in Admin Tool

Create the Dashboard in Admin Tool. It should display:

  • Information on the current system
  • Statistics about current selected project (builds amount, builds size, patches amount, etc)
  • Notifications if something is wrong
  • Misc

Wrong local header signature

I'm getting this error when running a WPF updater for a Unity app:

2021-09-22 15:00:20.965 -07:00 [INF] Updating process STARTED!
2021-09-22 15:00:21.704 -07:00 [INF] Update context initializing...
2021-09-22 15:00:21.706 -07:00 [INF] Update context points to [REDACTED]
2021-09-22 15:00:21.708 -07:00 [INF] Retrieved current version: 0.1.10
2021-09-22 15:00:21.712 -07:00 [INF] Workspace cleaned. Removed 0 files
2021-09-22 15:00:21.962 -07:00 [INF] Collected 205 local files.
2021-09-22 15:00:22.156 -07:00 [INF] Retrieved definition for 0.1.10
2021-09-22 15:00:22.275 -07:00 [INF] Found 1 applicable updates.
2021-09-22 15:00:22.276 -07:00 [INF] Update context completed initialization.
2021-09-22 15:00:22.280 -07:00 [INF] Launcher update started. The update contains 1 operations.
2021-09-22 15:00:22.283 -07:00 [INF] Launcher update completed.
2021-09-22 15:00:22.284 -07:00 [INF] Repairing process started.
2021-09-22 15:00:22.287 -07:00 [INF] Repairing process completed. Checked 201 files, repaired 0 files, skipped 201 files.
2021-09-22 15:00:22.288 -07:00 [INF] Update process started.
2021-09-22 15:00:22.288 -07:00 [INF] Applying update 0.1.10_0.1.12 [ApXw6Zygo9kmkNxuVfg0vWdoPVE]
2021-09-22 15:00:22.810 -07:00 [ERR] Updating process FAILED! - Wrong local header signature @3 -    at ICSharpCode.SharpZipLib.Zip.ZipFile.TestLocalHeader(ZipEntry entry, HeaderTest tests)
   at ICSharpCode.SharpZipLib.Zip.ZipFile.LocateEntry(ZipEntry entry)
   at ICSharpCode.SharpZipLib.Zip.ZipFile.GetInputStream(Int64 entryIndex)
   at ICSharpCode.SharpZipLib.Zip.ZipFile.GetInputStream(ZipEntry entry)
   at MHLab.Patch.Core.Compressing.ZipCompressor.ExtractZipFile(String archiveFilenameIn, String password, String outFolder)
   at MHLab.Patch.Core.Compressing.Compressor.Decompress(String folderWhereDecompress, String inputFile, String password)
   at MHLab.Patch.Core.Client.Updater.DecompressPatch(PatchDefinition definition)
   at MHLab.Patch.Core.Client.Updater.PerformUpdate(PatchDefinition definition)
   at MHLab.Patch.Core.Client.Updater.Update()
   at MHLab.Patch.Core.Client.Runners.UpdateRunner.Update()
   at MHLab.Patch.Core.Client.UpdatingContext.Update()
   at MHLab.Patch.Launcher.Wpf.MainWindow.CheckForUpdates()
ICSharpCode.SharpZipLib.Zip.ZipException: Wrong local header signature @3
   at ICSharpCode.SharpZipLib.Zip.ZipFile.TestLocalHeader(ZipEntry entry, HeaderTest tests)
   at ICSharpCode.SharpZipLib.Zip.ZipFile.LocateEntry(ZipEntry entry)
   at ICSharpCode.SharpZipLib.Zip.ZipFile.GetInputStream(Int64 entryIndex)
   at ICSharpCode.SharpZipLib.Zip.ZipFile.GetInputStream(ZipEntry entry)
   at MHLab.Patch.Core.Compressing.ZipCompressor.ExtractZipFile(String archiveFilenameIn, String password, String outFolder)
   at MHLab.Patch.Core.Compressing.Compressor.Decompress(String folderWhereDecompress, String inputFile, String password)
   at MHLab.Patch.Core.Client.Updater.DecompressPatch(PatchDefinition definition)
   at MHLab.Patch.Core.Client.Updater.PerformUpdate(PatchDefinition definition)
   at MHLab.Patch.Core.Client.Updater.Update()
   at MHLab.Patch.Core.Client.Runners.UpdateRunner.Update()
   at MHLab.Patch.Core.Client.UpdatingContext.Update()
   at MHLab.Patch.Launcher.Wpf.MainWindow.CheckForUpdates()

Support for a non-Newtonsoft JSON Serializer

The Newtonsoft serializer used by PATCH seems to be causing package conflicts with other assets and potentially the built-in Unity version. Rather than fighting through these, it seems easier to either replace it with another serializer altogether, or provide an alternative serializer if you have a problem. Several other JSON serializers exist, it would just be a matter of implementing them within PATCH.

Slice/Chunk Parallel Transfers needed for High-Latency / Distant Connections

Despite multi-threading, we are experiencing slow transfer times on large files (like piggs) for users who are in Europe with high ping times / latency, as each large file is only serviced by a single thread/channel. Adding 16-32 slice/chunk parallel transfers would allow high-latency users to more properly make use of their available bandwidth, as although each channel would be limited in transfer speed due to latency, running them in parallel would stack the overall speed. Of potential use in terms of integration at the file transfer layer is Aria2 (https://aria2.github.io/) which is a very stable and mature transfer tool that supports splitting files into 16 separate slices / transfer channels, as well as HTTP, HTTPS, FTP, Bittorrent and more.

(Mac) Can't update the Launcher

Updating the game via the launcher is working. But updating the Launcher itself isn't. Maybe this is because of something I noticed.

So when I build the Game (With the PreGame scene on build index 0) and start it when the building is done. It opens the PreGame scene and starts downloading the new Launcher. This is great.

But when I let the Launcher download the game logic and start the game it immediately starts the game and seems to skip the PreGame scene logic.

Any ideas of what I am doing wrong?

ps: I uploaded the right versions.

Custom Versioning

I'd like to be able to enter my version as x.y.z (with of course only incrementing the values).

eg: 36.20200620.1

Having the possibility to show a custom version field instead of selecting the release type would do the trick.

It should also have the possibility to enter the version for the 1st build.

Create the Patches page in Admin Tool

Create the Patches page in Admin Tool. It should display:

  • a way to select two builds
  • a way to preview the resulting patch
  • a way to build the patch

Launcher Update failure after updating the asset

Hello

After updating the asset (INDIE version) to the current version 2.3, a launcher on backend Mono made with version 2.2 of the asset can not update to a launcher made on same backend with version 2.3. Logs:

2020-07-29 21:28:53.132 +02:00 [INF] Update context initializing...
2020-07-29 21:28:53.132 +02:00 [INF] Update context points to https://mitschmr-studios.io/games/defnite/
2020-07-29 21:28:53.189 +02:00 [INF] Retrieved current version: 0.2.3
2020-07-29 21:28:53.196 +02:00 [INF] Workspace cleaned. Removed 0 files
2020-07-29 21:28:53.380 +02:00 [INF] Collected 323 local files.
2020-07-29 21:28:53.462 +02:00 [WRN] Cannot retrieve the build definition for 0.2.3
2020-07-29 21:28:53.463 +02:00 [INF] Found 0 applicable updates.
2020-07-29 21:28:53.463 +02:00 [INF] Update context completed initialization.
2020-07-29 21:28:53.464 +02:00 [INF] Launcher update started. The update contains 161 operations.
2020-07-29 21:28:53.472 +02:00 [ERR] ===> [Launcher updating] process FAILED! <===

If I have a launcher made with 2.3, change a few things and deploy a new version with 2.3, it updates without problems.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.