Unofficial City of Heroes patcher/launcher
I've written a command-line program as a Linux-compatible replacement for the NCSoft launcher. I've used it to successfully install City of Heroes from scratch; beyond that, it's totally untested. Use at your own risk.
- Perl 5.8 or newer.
- Wine. No particular version is required, though newer versions will generally give better results. I'm sure that Wine derivatives like Cedega/GameTreeLinux or Crossover Games will work, but since I don't have those, I can't test them.
- One of Wget, cURL, or libwww-perl. Wget is strongly preferred, as it has better support for resuming partial downloads.
- Xdelta 1.1. Xdelta 3 will not work, as it is not backwards-compatible with version 1.1 patches.
- Unrar 3.
- XML::Simple, installed either through your package manager or through CPAN.
Download the latest version of cohlaunch.pl and untar it somewhere handy.
Usage: cohlaunch.pl [--keep] [--repair] [--silentlaunch] [--silent] [--patchonly] [(--en|--de|--fr)] (-live|-eulive|-test|-beta) [City of Heroes options].
-live, -eulive, -test, -beta: Update for the normal, European, test,
or beta clients.
Changing an installation from normal to test, or normal to beta is
supported, while changing from test to beta may or may not work.
Changing from beta or test to normal is not supported and will
probably not work.
--en, --de, --fr: Select the language to use.
--keep: Keep downloaded patches. This may speed up future patching, or
it may simply waste large amounts of disk space. It's your choice.
The launcher will delete patches that fail checksum verification
regardless of this setting.
--patchonly: Patch the City of Heroes client, but do not launch it.
--repair: Verify file checksums and re-download files if needed.
Files are transferred uncompressed rather than as compressed patches,
so it is not recommended that you repair an out-of-date installation
unless updating fails.
--silentlaunch: Suppress all console output from City of Heroes.
This may improve stability or give a slight increase in framerate.
For most people, I expect it will do nothing.
--silent: Suppress all output except error messages.
Passing the City of Heroes option '-renderthread 0' may be required, as
multithreaded rendering tends not to work on Linux.
Run this script from an existing installation directory, or
from an empty directory to install a new copy of City of Heroes.
This script has not been extensively tested; use at your own risk.
This page is copyright (c) 2011-2012 Mark Wagner. No Rights Reserved.
- Version 0.5: Initial release.
- Version 0.5.1: Fixed some residual references to /tmp.
- Version 0.6: Fixed some bugs related to quoting of filenames and checking of return values. Tested against a real update.
- Version 0.6.1: Fixed a bug related to reinstalling where it would incorrectly complain about being unable to create a directory.
- Version 0.6.2: Switched to launching City of Heroes using "exec" rather than "system".
Added "--silent" and "--silentlaunch" options.
- Version 0.7: Added support for server-provided command-line parameters. The "-auth" command-line parameter should no longer be needed.
Added support for launching CoH in languages other than English (--de, --fr, --en options).
- Version 0.8: Added support for repairing an installation (--repair option).
Made Configure() report all missing programs at once, rather than one per try.
Fixed detection of unrar.
Set unrar to automatically over-write existing files.
- Version 0.8.1: Fixed retrieval of server-provided command-line parameters.
- Version 0.8.2: Added support for the "FileDelete" patch command.
Added the "--patchonly" option.
Added the ability to resume a partially-applied patch.
- Version 0.8.3: Fixed a crash when there's only one FileAdd, FileDelete, or FilePatch operation in a patch.
Added improved checks for unknown patch operations.
Suppressed redundant file verification by the City of Heroes client.
- Version 0.8.4: Added support for Digest::MD5 (checksums) and libwww-perl (file download).
Added untested support for launching City of Heroes using Crossover Games.