Installer 5 Release Candidate 2 has been released

  • Hi there Guest! Installer 5 is now out of beta and available publicly!


Sammy Guichelaar

Staff member
Premium Member
2 May 2018
The Netherlands
User Role
Support Email
[email protected]
Hello all!

We are excited to release Installer 5 release candidate 2 (rc2). This is yet again a big update & should fix most of the issues which were reported with RC1. Several major parts of Installer were also rewritten from scratch. Please read the entire post. Known bugs & our beta repository are available below.

Two weeks ago, we released a massive update, which was release cadidate 1. See for the changelog & release notes see
Important - Installer 5 release candidate has been released for beta testing


  1. ATRPackage updates have been rewritten entirely and are WAY more efficient than before, we will only ever write a package once during an update
  2. ATRSourceRefresh uses more granular methods that are a lot easier to read and understand, especially the parsing/update portions
  3. ATTabBarControllerViewController now controls a single instance of the QueueGlanceView for all controllers
  4. Added ATParsingUtility (still a work in progress) as a centralized parsing tool to help clean up the code base (Currently only used in ATSourceRefreshTask)
  5. Added ATTabBarControllerViewController to implement custom behavior in the TabBar
  6. Added IS_DARK_MODE symbol to the prefix for convenience
  7. Added InstallerPersistentDictionary which acts as a global instance of the Preferences dict and reduces disk IO operations
  8. Added PersistentDictionary class to manage read and write operations for a dictionary for the life of the object
  9. Added a custom view class QueueGlanceView to replace the Queue button added to every view controller
  10. Added interactive animation to QueueGlanceView to bring a little life to the UI
  11. Added interactive button animation to the source import screen buttons
  12. Added preferredStatusBarStyle support to ATPalettedViewController
  13. Added rebuildPackagesCategoriesCache to the UpdateInformationCacheTask (I have plans to completely remove the need for this)
  14. Added sourceURLsFromSourceListAtPath to ATParsingUtility, this will parse a source list from any source list including Sileo lists (this ensures that all duplicates are removed, no empty urls are added, and that every url ends with a forward-slash /)
  15. Added support for colored log messages from APT output
  16. Added support for colored verbose log messages, (still needs some work)
  17. Added support for detecting and showing *Essential* packages as updates when they are not yet installed
  18. Added support for importing sources from multiple package managers at the same time during setup
  19. Added support for more DPKG status file fields, Fixed APT parsing error due to 404 for compressed packages
  20. Added support for parsing Essential packages in checkStatusFile (this method will be entirely rewritten soon)
  21. Added support for showing incompatible packages in the ATPDependsTree (UI still a work in progress)
  22. Cleaned up legacy task usage in ATPipelineManager
  23. Disabled the use of RepoImportProgressViewController, source refreshing should be efficient enough now that we don't need to hide lag with this view
  24. Fixed a potential issue with PersistentDictionary that could cause a double write condition
  25. Fixed issue where ATPDependsTree could incorrectly flag a package as incompatible
  26. Fixed blocking in rebuildPackagesCategoriesCache if its run from the main thread
  27. Fixed broken "Other Categories" group in the Sections tab
  28. Fixed crash due to UIFontDescriptorTraitMonoSpace returning a nil font on iOS 12 and below due to there being no monospaced system font
  29. Fixed crash due to nil date being added to a Dictionary for packages with no info file
  30. Fixed crash due to nil value in checkStatusFile method (hopefully)
  31. Fixed crash in FeaturedViewController during source import
  32. Fixed crash on iOS 12 and below when showing the verbose view
  33. Fixed crash when dequeuing packages from the queue
  34. Fixed post install actions not always showing in the queue
  35. Fixed error code 34 missing a description
  36. Fixed issue where ATPaletteManager would reset dark-mode settings on app launch
  37. Fixed issue where a 404 response for a compressed packages file would be written to the release file causing APT parsing warnings
  38. Fixed issue where source info would be sent to AppTapp servers for each individual source during every refresh, the remote source list is now loaded on launch and if the remote info matches the local info, it will be skipped.
  39. Fixed nullability issue in ATDataTaskOperation
  40. Fixed progress view not showing on the TasksVerboseViewController
  41. Fixed queue name labels in dark mode
  42. Fixed some cases where preferences were loaded as a dictionary rather than using InstallerPreferences, the new preferences class is optimized so we don't need to do this anymore. Reading and writing even with multiple values at a time will not need to load from disk.
  43. Fixed some dark-mode issues caused by ATPaletteManager
  44. Fixed some issues introduced with the new preferences
  45. Fixed respring not being suggested when it was needed (when a package is installed to /Applications)
  46. Fixed text coloring issue with ATVerboseTypeInfo messages
  47. Fixed warning about NSTask in architecture
  48. InstallerPreferences can still be used as normal with this new implementation, there are also a handful of convenience methods in PersistentDictionary to return whatever value you want without value casting
  49. JSON package support has been removed from ATSourceRefresh
  50. Make use of the global instance of the compatibility dictionary that is allocated on app launch
  51. New implementation of the Queue Quick View
  52. Packages file parsing has been rewritten from scratch
  53. Parsing method is now determined by the network response and not predefined parameters, this means that issues such as Packages files being written to Release files, and incorrect compression detection are no longer a factor
  54. Probably a number of other changes/fixes that I'm forgetting, this update took a lot longer than expected
  55. QueueGlanceView is now updated using realm notifications, so it always has an accurate package count and always dismisses/shows when a package is queued/un-queued
  56. Removed legacy package tasks (ATPackageUninstallTask, ATPackageInstallTask, ATPackageRemoveTask) (still in project folder, but removed from the xCode project)
  57. Removed support for beta packages since they are only used by JSON packages
  58. Removes 17 properties from ATRPackage **(changelog, needUICache, postuninstall, preinstall, preuninstall, postinstall, productKey, authorAvatar, beforeAfter, donateLink, extension, Hash, twitter, updateScript, youtube, extrainst, isBeta)** and renamed uninstall to installed files
  59. Replaced InstallerPreferences with a custom persistent dictionary
  60. Slight optimization to refreshAllSources to remove redundant checks
  61. Source Refresh Rewrite
  62. Switched to ATPalettedViewController for dark-mode management in TasksVerboseViewController (I will fix the navigationBar color in the next commit)
  63. Switched to custom network handling instead of URLSessionDelegate for ATSourceRefresh, this offers better control over threading and the use of asynchronous requests
  64. Updated PackagesConfirmationViewController to support the new incompatible packages array in the depends tree
  65. Various cleanup of JSON package format support throughout the project
  66. packages selected for uninstall are considered as installed by the status file check
  67. rebuildPackagesCategoriesCache is now a synchronous method, this helps with crashing issues due to it running asynchronously on multiple threads (Still need to fix locking on this method)
  68. skip allocating a new tweak compatibility dictionary for each source during refresh
  69. Fixed UICache not being run after package install/uninstall
  70. Switched to a MUCH faster way of fetching installed files for a package
  71. Added checkStatusFileWithCompletion: to ATInstaller
  72. Added installedFilesForIdentifer: to ATAPTManager

Known Bugs

  1. Lag when switching tabs (most notably when switching back to the manage tab) [Cause known, fix coming as soon as possible]
  2. The UI for incompatible packages in the confirmation view is still a work in progress [Actively working on this]
  3. When launching, the changes tab will show a badge indicating updates for a fraction of a second before it correctly disappears.
  4. When switching to search immediately after opening the app Installer crashes. [Actively working on this]

How to get Installer 5 RC2

Join our discord and apply for the beta tester role
Join the AppTapp Discord Server!
Last edited:
  • Like
Reactions: omeklts

Sammy Guichelaar

Staff member
Premium Member
2 May 2018
The Netherlands
User Role
Support Email
[email protected]
Installer 5 RC3 has been released.

  1. Added paletteWillChangeToStyle: to apply palette overrides for a style before the internal style change
  2. Added migration block which fixes crashes on launch caused by an old database version (from the early betas)
  3. Added separate color for navbar background
  4. Added support to override any ATPalette color property setOverrideColor:forKeyPath:
  5. Disable the decompression error alert and just mark the source with an error (highlights source in red)
  6. Ensures that we dont check if the file has changed on the server if the source had a decompression error in the previous refresh
  7. Fixed issue where rebuildDictOfNewPackages could result in a crash due to nil object being inserted into a dictionary
  8. Fixed navbar settings on iOS 13 to match older styles
  9. Fixed some duplicate allocations in the internal palette change
  10. Fixed the verbose view navbar and text color when in light mode
  11. Fixed the verbose view text color having transparency
  12. Fixes a crash on launch if schema was not compatible
  13. Fixes TabBar badge showing incorrect update count on app launch
  14. Force a complete refresh of any source that encounters a decompression error on the previous refresh
  15. Force a full refresh if either the APT sandbox, our SourceFiles directory is missing an entry for the source being refreshed
  16. Updated ATPalette management, now production ready
As we speak, we are working on RC4 so stay tuned!
Last edited: