Ripdev: installer Archives

Recently in installer Category

Bye Bye Installer!

| | TrackBacks (0)

Installer.pngToday, a new iPhone OS, 3.0 has been released. This is obviously a big and long waited for update for all iPhone users. And we believe, it is about time to officially announce that we are discontinuing support of Installer platform for iPhone and iPod touch.

Over past 1.5 years when we were involved in the Installer project (first in 3.x versions, then in 4.x), a lot of things has happened and we believe it's time to unify the installation platform for the iPhone — and clearly, over the past year this is DPKG, thanks to tremendous effort of Jay Freeman and his Cydia. We have also dropped our two cents by providing our own themeable and lightweight DPKG installer tool, named Icy.

So now you have a choice, which tool to use — and no matter what you choose, it will be compatible with each other. We obviously cannot speak for Jay, but we will do our best to make sure two products play nicely together.

The Installer 4 repositories we manage will be running until July 1st, 2009, then they will be discontinued and brought offline. So if you wanted to get something that is only available in the Installer — this is the time to do so.

We would like to take the opportunity and say “thank you” to everyone who has contributed and supported Installer project in any way. You rock.

Installer 4.1

| | TrackBacks (0)
Installer 4.1 is out. What's new?
  • Cancelable tasks: certain tasks now can be cancelled by sliding your finger across it in the Tasks window.
  • Progress indicator in the source refresh task.
  • German localization by
  • Updated infrastructure for the upcoming InstallerApp.
  • Of course, bug fixes. :)

Available in the Installer near you ;) Enjoy.

We wanted to reveal something we've been working on for a while - a software for the desktop computers that will install third-party packages on your iPhone.

InstallerApp (on Mac OS X)

Practically it is a desktop variant of our own It will allow you to view and install packages that are present in various Installer and Cydia repositories by downloading them to your computer and then synchronizing via the USB cable with your iPhone.

With InstallerApp you will be able to install many of the available third-party software packages, both requiring the system partition to be writable, and the ones that do not. Yes, there are less packages that don't require writable system partition, but it does keeps your iPhone more secure.

Once installed on the iPhone, the package will be stored on your computer's hard drive and InstallerApp will (just like iTunes) notify you of updates. You will also be able to quickly reinstall the packages you have after the restore, without having to select each of them individually.

We got plenty of plans on enhancing this solution - for starters lets mention that in the future you will be able to get trial versions of the installable commercial software... and much more.

InstallerApp is in beta testing now and we anticipate the 1.0 release soon. We'll keep you posted on the progress.

Installer 4.0

| | TrackBacks (0)
It's been a while and we're proud to announce the immediate availability of Installer 4.0.

Since its last public beta, it has come underway a significant change -- for starters, we have added Greek, Russian and Ukranian localizations, redone the interface for speed, fixed a bunch of bugs and made it so it can bear the tag "4.0". And yes, we're proud of what we have done -- largely with your feedback.

This doesn't ends the evolution of Installer -- actually, this actually begins the road of improvements we have planned, so... stay tuned.

PS While we're at it, check out a free tool for Mac OS X and MS Windows called JuiceDrop that we released a while ago. It allows you to quickly upload files to the iPhone via USB cable by just dragging and dropping.

PseudoSubstrate 1.0

| | Comments (51)
Quick digest in one line: PseudoSubstrate, a replacement for MobileSubstrate (available in Cydia) is now available for the, allowing to host and use the packages that use MobileSubstrate. The first package is also available now, named MySMS. PseudoSubstrate is used for situations when you don't have Cydia installed or prefer Installer over the former and requires no additional work from developers' side. And it's faster, too.

And a little background for the curious minds. Often the task of many utilities are to extend the functionality of existing applications, such as SpringBoard, SMS, and so on. Of course, to extend the application, some additional code created by a third party has to be loaded into the application memory and then alter the behavior of these applications. How is this done? Altering is performed by finding one of the common functions in the application that perform the task we'd like to alter (for example, function that sends an SMS message). Then a replacement "patch" function is written that accepts the same parameters as the original, and it is "swapped" with the original one. Usually these patches do something then call the original, so essentially nothing is lost functionality-wise.

Both Mobile Enhancer and MobileSubstrate are essentially bootstrappers that aid the patch modules in loading into the host application they are about to extend and to help them patch the functions by providing common interfaces that replace the original function with a patched one and provide facilities for calling the original afterwards. They're nothing else than that - iterating through a list of patch modules loading them one-by-one into the application you're launching and then providing some helpers to assist the modules into getting the job done (and don't conflict with other modules who potentially wish to patch the same function).

Of course, nothing is stopping a developer for creating their own bootstrapper, and this is what some of them still do. But it's more logical to adopt a single platform and then use it.

Mobile Enhancer exists since September 2007, and is a direct descendant (actually, in some aspects, it is an ARM port of it) of Application Enhancer by Unsanity, which is a Mac OS X library doing the same thing. MobileSubstrate was born sometime this year because apparently its author didn't like the fact Mobile Enhancer is closed source (but still free). I may be wrong in the reasoning, though, maybe the author will comment on his own.

As it often happens, free is not necessarily better. As any quick&dirty job, MobileSubstrate does what it's made for, but the way it does it is far from effective. But hey, it's open source, anyone can make it better, right?

You may think I might be biased, but let's look at the facts:
  • MobileSubstrate is using a simple way of patching C functions where multiple patches for the same function will conflict.
  • The way of patching Objective C methods used by MobileSubstrate is puzzling me. Instead of just swapping the IMP addresses of the functions, it does that, but also adds a new method into the class methods list. While I can understand, why (it's easier for the developer to write [self orig_patchedFunction:arg1] than gPatchedFunction(obj, sel, arg1);) but in the end it causes a separate call to objc_msgSend resulting in 50 to 400 extra instructions to be executed just to call the original function. Talk about speed, huh.
  • The way MobileSafety works (it controls the Safe Mode commonly seen in the SpringBoard) is okay for a UN*X diehard - but it relies on some assumptions it shouldn't. For example, it traps common signals sent when the app is crashed (SIGSEGV, SIGBUS, etc) but doesn't passes the extra information to next handlers in chain! Hello, this is 21st century, and we're not talking of command line tools here - it's done inside a full-fledged GUI app, and who knows, that extra information MobileSafety discards may be useful - you never know!
  • The loader itself is written in Objective C which means it is much more slower than compared to the one written in pure C - and that affects every application launch.

Well, I guess since it still gets the job done, I couldn't blame it much. It's a great concept which got executed fairly poorly - which is understandable as the author apparently have a day job and maybe has little time and/or knowledge for hacks like this (again, UN*X is not Mac OS X).

Either way... since MobileSubstrate is inferior to Mobile Enhancer, it was pretty easy to create a wrapper that would load MobileSubstrate libraries (using pure C, so it does it faster) and provide the functions provided by MobileSubstrate (that also work more correctly in some aspects) so the developers who use MobileSubstrate don't have to change anything in their applications - it will just magically work.


Installer 4.0b11

Just a quick heads-up for you all, a new version of is now available for downloading. Here's what is new and changed:

  • Updated category is now only show when something is actually updated.
  • Update All button for the Updated category.
  • ChangeOwner(path, owner[, group]) script command is now recursive.
  • ChangeModeRecursive(path, mode) script command added.
  • Each category now lists a number of packages in it.
  • Dramatically reduced memory footprint.
  • Package information is now properly scrollable.
  • More info button in the package information page is now much (much!) easier to hit.
  • Better handling of repositories with a large amount of packages.
  • Fixed a few Lua commands that were a little broken in the introductory release.
Stay tuned for new releases and thanks! We encourage you to install new Community Sources as well.

The truth is in the middle (Gautama) - between one's desire and what's allowed (RiP Dev).

Pusher: Your 2.2 jailbreak

| | TrackBacks (0)

Dear iPhone users,

In leu of the recent release of firmware 2.2, I think it is a good time to tell you what we were working on in the past 2.5 months. Today, a number of updates are being released, along with a completely new product that should simplify your use of the iPhone, expand a whole new world of possibilities without compromising security of your phone.

I'll start from the beginning. You probably are all aware what jailbreak means, but I will reiterate just to make it clear. By default, each iPhone has two partitions: system one and user one. The system one is where the system files and system applications are stored. The user one holds your contacts, SMS, AppStore applications, music, videos and so on. Historically, for security purposes, the system partition was always in the "read-only" mode, to prevent malicious access and modification of the system files. Jailbreak process was created to facilitate the need of unlocking of the phone as initially it was only working with AT&T network, and user partition didn't allow execution of programs - in a nutshell, it simply allowed the system partition to be writable - so one could add and run third-party applications on it.

Now, more than 1.5 years later, jailbreak has became a synonym of something "hackish", and moreover, some Apple outlets are not servicing the jailbroken phones. Granted, jailbreak is needed to make certain tools work - such as BSD Subsystem, SSH, and some others, but overall nowadays (largely because of the tools mentioned) it actually makes your phone less secure! Why? Because it allows anyone to contact your iPhone via SSH with root (superuser) access and gain access to any file on it - this being your contacts, mail, photos, music and whatnot - and what's worst, you will not even know it happened! SSH is a commonly known protocol, so almost anyone could get onto your phone as long as you're in the same WiFi network. How? Two things: default installation uses the same root password, "alpine" (and 99% of the users never change it), and SSH actually advertises itself over Bonjour! So all someone has to do is open up a Bonjour-compatible SSH client (such as on Mac or almost any SFTP client), pick the iPhone they want, and start rocking!

I won't argue that BSD and SSH are needed by some people who actually need BSD/SSH access on their iPhone - but let's face it, this is mostly the über-geeks. About the only use for SSH for a casual user is an ability to upload files to the iPhone - and, since it's not the only available method, I strongly believe the possible security risk is honestly not worth it.

So my point is simple - jailbreak is no longer needed in its "traditional" form for most people. This is why we have developed a tool that does something else... and it's absolutely amazing. Here's what it does: it puts some tools (including our own Installer) onto the user partition of the phone without opening the system partition up! You get Installer, a whole world of third-party tools that didn't got into the AppStore for some reason, such as Kate, Qik, Snapture, and dozens of others, all that without compromising your security!

The tool is named Pusher (mostly because it pushes some things onto the iPhone, and because we found the allusion funny). It works for both 2G and 3G phones running 2.0.2, 2.1 and 2.2 firmwares. Simply download it, launch and follow the instructions on-screen - the whole process takes about 3 minutes.

To make your life even sweeter, we went ahead and added a few things for free that we thought might be useful - an alternative system font, an ability to set your SpringBoard background, two alternative Cyrillic keyboards, and a few other extras that might become useful. The Mac OS X version is available for download immediately, with a Microsoft Windows one following shortly after.

Of course, because Pusher's process of installing tools onto your user partition leaves the system one locked, some tools will not install - to name a few, that's BSD Subsystem, SSH Server, and maybe some more. But the majority of apps will just work - so you can get the best of both worlds - AppStore and Installer.

You can download Pusher at its homepage - give it a try.

Also a new thing for today is Installer 4.0b10. Other than stability improvements, we have embedded a scripting language named Lua that is used in such applications as Adobe Lightroom and World of Warcraft. Lua makes it possible to write more sophisticated install scripts and we're taking full use of it for our updated products.

Oh, and we are also releasing updates to Kate and Russian Project to make them 2.2-compatible.

Stay tuned for more updates and news!

Installer 4.0b9

After a fair amount of inactivity on the Installer front, we're bringing it back to speed by providing rapid updates to get it in shape as soon as possible.
installer 4.0b9.jpg

What's new or fixed in this update...
  • Added user-driven ratings. We encourage you to submit your votes for various packages. Once more data will be collected (in a few days), that will be reflected on the Featured page.
  • SpringBoard is no longer terminated after the software was installed or removed.
  • Proxies are (again) supported. The support was broken after we moved to libcurl.
  • Introduced download timeouts (again) that were disabled after the move to libcurl.
  • Reworked many parts of the engine in an effort to get rid of the occasional GUI stalls.
  • If a particular source fails to update, it will be moved to "disabled" state for 6 hours and will not be included in the all sources refresh process. The disabled state is listed as the source icon with a red "stop" sign over it. This is done to prevent unnecessary stalls at the sources refresh if one of the sources goes offline for whatever reason. If you'd like to retry it before 12 hour interval, open its info and hit Refresh button there.
  • Removed customInfo support as it was mostly used for unnecessary ads that were disturbing many people. These pages are normally reachable from the "More Info" link.
  • Much better error reporting. Forget these "error 3"s and such. The descriptions are much more human readable now. And for script errors, it will show an actual script command that caused an error.
  • Installer will prevent iPhone/iPod touch from sleeping when it's downloading or installing something.
  • The app icon badge should behave better now.
  • Lots of smaller fixes and optimizations I won't list.

The update is available now... and we'll continue improving on the product, thanks to your feedback and support.

What's Up?

| | TrackBacks (0)
Apologies for being so silent over the past weeks. There are no real excuses, other than being totally swamped with various work on all fronts that we've been doing... and hopefully you'll be able to see them soon.

Now, what's new?

Installer 4.0b8 is out (it's been ready for a while and even included in the last PwnageTool but we were holding off to releasing it publically). Among notable features is the switch to libcurl from the stock Foundation URL loading classes, which means more lightweight CPU and memory footprint and, more importantly, resumable file transfers. The new beta also features a plethora of little fixes which we won't extensively list here. Enjoy. We'll be pushing out a 4.0 release soonish...

The featured page you see when you launch Installer is actually automatically generated based on the popularity of the packages (based on the number of installations across the board), so it's nothing like the "old" featured page that listed a set of pre-defined products. It will eventually have some "sponsored" products, but they will be easily distinguishable visually and we'll try to keep the amount of these to the minimum - no more than 3.

Community Sources are updated as well to reflect the change in the domain name and to remove some outdated sources that shown promise but actually never delivered anything.

Kate update been out for a while, and we're finally at adding new features to it - so look for a non-bugfix release in the near future.

If you're a software publisher and would like to be hosted in Installer - please let us know and we'll do all the work for creating proper install scripts and hosting on our server (which has a few spare terabytes of bandwidth).

Moreover, thank you for staying with us and supporting us along the way - it couldn't been done without you!

Proudly presenting you the new beta of Installer - 4.0b6.

New and changed:
  • Search. It searches among packages from the repositories you have added, and, if you let it sit for 5 seconds, will query our server and return packages that are available from repositories you don't have added (that we know about) with an option to automatically add and install. Repository owners, upgrade to the latest version of the repo code (below) to have your repository added to the search engine.
  • Uninstall now works correctly.
  • Fixed a lot of locking issues especially with custom HTML info pages.
  • Updated the Categories and Tasks icons so they are less ugly.
  • Fixed a bug with multiple copies of Installer appearing in Installed Packages under some circumstances.
  • Installer will now correctly check and prompt for an update of itself.

Also, to accompany the Installer release, a new edition of the Repository code is up. Grab it here:

What's new in the repo code?
  • Added an option to ping the Installer search server so it reindexes your repository. The ping occurs during regenerate.php run.
  • Much better handling of ZIP archives, since this is what most people had troubles with. It now attempts to determine which way to use to unzip your files (PEAR::ZipArchive, zip_open or shell_exec("unzip")). Please note that we didn't test zip_open piece of the code as we don't have a server with that plugin compiled in PHP.
  • DOMDocument::load() should work under PHP4. We hope.
  • Slightly better handling of the multiple versions of the same package.
How to upgrade? Simply replace regenerate.php with the new one, and add new configuration parameters from to your There are two: REPOSITORY_URL, that should have a full path to your repo (with a trailing slash), and ZIP_CMDLINE_PATH (only add this if needed). Refer to for the descriptions and copy-paste goodness.

Don't forget to regenerate your repositories once upgraded, and also don't forget to put 2.0.2 into POSSIBLE_FIRMWARE_VERSIONS array so people on the new firmware can see your packages!

Thanks. :)