- Requirements
- Windows
Visual Studio 2019
.NET Framework 4.8
*ONLY BASE UNBRANDED THEME IS INCLUDED, BRANDED THEMES ARE DISPLAY SAMPLES ONLY AND ARE OWNED BY THEIR RESPECTIVE SHARDS*
An Account Upgrade is required to download this resource.
# Ultima IPL
Ultima Online - Install-Patch-Launch
Allow your players to easily install and update everything required to play your shard!
Host your own patch server without requiring a web host or website, distribute your shard's files easily by having your players download a single all-in-one executable that handles it all for them!
No more verbose install instructions, no more manual IP input, just download, patch, and play!
Fully supports deployment of Razor, Steam, and ClassicUO - the launcher will keep necessary files up to date and makes sure the essential settings for connecting to your shard are always correct, minimizing user error potential.
Serves as a sandboxed webhost so you can link to your files individually if needed.
# Cross-Platform Availability
An open source CLI-based client, compatible with the IPL manifest protocol, is available for download on GitHub:
GitHub - Ohkthx/xIPL: Cross-platform (x) Installer, Patcher, and Launcher (IPL) for Ultima Online.
The project is developed and maintained by Schism.
This client does not currently provide the server mechanism for updating and deploying.
# BUILDING
Use Visual Studio to load and build the solution (UltimaIPL.sln)
The build output will be in the /Build directory.
/Build/Patch contains the patch process core (UltimaIPL.Patch.dll)
/Build/Client contains the client (UltimaIPL.Patch.Client.exe)
/Build/Server contains the server (UltimaIPL.Patch.Server.exe) ***
*** The contents of /Build/Patch and /Build/Client are also moved to
/Build/Server because they are required for the server to run properly.
# CONFIGURING
There are three main configuration features to cover;
GLOBAL: Immutable settings used by both client and server.
Open and edit /Source/Patch/Settings.cs
CLIENT: User settings which are stored locally.
Defaults can be specified by editing /Source/Client/UserSettings.cs
SERVER: Server specific settings loaded using config files.
Open an edit one or more *.cfg files in /Build/Server/Config
# PREPARING
DO NOT RENAME /Build/Server/UltimaIPL.Patch.Client.exe
Doing so will prevent the server from pushing new client updates.
The file will be pushed with the alternate name specified in Patch.Settings
DO NOT RUN /Build/Server/UltimaIPL.Patch.Client.exe
Doing so will start the client and may pollute the server root with
unnecessary directory or files.
You may run /Build/Client/UltimaIPL.Patch.Client.exe to test your build.
DO NOT RENAME /Build/Server/Ultima Online
This directory is the root distribution directory.
This is where you place all the files you wish to ditribute and update.
ASSISTANTS can be deployed with the game files;
RAZOR: ./Ultima Online/Razor/Razor.exe
STEAM: ./Ultima Online/Steam/UOS.exe
CLASSICUO: ./Ultima Online/ClassicUO/ClassicUO.exe
All files that are usually included with an assistant should be placed
in their respective directories.
The client will recognise and configure the assistants automatically
when they have been downloaded and installed with the game files.
# FILTERING
NOTE that there are files which may be updated locally by the game client.
These files should be suppressed from future updates if they already exist.
To do this, rename the file with a plus prefix, for example;
Uo.cfg -> +Uo.cfg
Below is a list of common files that require prefixes;
[+] CREATE only if the file DOES NOT EXIST:
\+entitled.def
\+Macros.txt
\+macros2d.txt
\+metrics.txt
\+Obscene.lst
\+Uo.cfg
\+Uobscene.lst
\+Uomax.cfg
\+Uoreg.cfg
\+Uoupg.cfg
\ClassicUO\+settings.json
\Steam\+assistant.xml
\Steam\+launcher.xml
\Steam\Profiles\+Default.xml
[-] DELETE only if the file EXISTS:
\-uninstUOClassic.exe
\-UO-patch.cfg
\-uo.bin
\-UO.exe
\-UO.exe.manifest
\-UOPatch.exe
\-uotd.exe
\-vercfg.cfg
# DEPLOYING
When everything above has been covered, a manifest can be generated.
Run manifest.bat to generate a new manifest.lst with an updated version.
The manifest is generated based on the contents of /Build/Server/Ultima Online
If you make any changes to any files in that directory, then you need to
create a new manifest.
If the server is already running you can use the 'manifest' console command
to regenerate it.
The client can be deployed at any time, with the server running or not.
Replace /Build/Server/UltimaIPL.Patch.Client.exe with the new build to deploy.
Run /Build/Server/UltimaIPL.Patch.Server.exe
The server will spend some time generating hashes (checksums) for all of the
files listed in the manifest.lst and can take up to a couple of minutes.
When hashing is completed, the server will bind to the pre-configured port.
The server is fully accessible via http, simply visit a standard url to begin
downloading the client (replace the IP and port with relevant values);
EX: http://127.0.0.1:2595/download
# SUPPORTING
With so much variety in platforms that users run on, there are bound to be
some hurdles to jump before they can get going...
#1: Can't start the patch client.
A1: Update .NET Framework to 4.5.2
A2: Add a virus scan exception for the patch client.
A3: Run the patch client using Administrator rights.
#2: Can't connect to remote host
A1: Add the patch client to the firewall whitelist.
A2: Add a virus scan exception for the patch client.
A3: Run the patch client using Administrator rights.
#3: Downloading exe files fails.
A1: Add a virus scan exception for the patch client.
A2: Run the patch client using Administrator rights.
#4: Downloading fails at 99.99%.
A1: Connection was interrupted.
A2: File local access or permissions changed.
A3: File became unavailable on the server.
#5: MSVCR*.dll is missing.
A1: Install Microsoft Visual C++ Redistributable 2012 to 2019
# COMMANDING
The server has a few commands available to make life a little easier...
Simply hit enter in the servers' console to see a list of commands.