Release Pndtools


Jun 17, 2009
Hi there,

so far I only posted this on the official boards, but seeing many devs are still exclusively active here, you may find this interesting, too.

PNDTools (in the lack of a better name)
is a simple and easy-to-understand GUI for opening, browsing, editing and creating PND files and
you can also view, edit and create PXML files with it (WIP, please send me feedback, see below).

What does it do?
  • It can open a PND and display its contents in a tree structure
  • You can then extract data from the PND or add new stuff
  • It extracts the PXML and icon data
  • You can create a new PND from scratch or modify an existing one and save the result again as a PND
  • GUI for viewing and editing the PXML file (beta)
  • It has options
What does it currently not do? (aka things on the todo-list)
  • Parsing of the PXML file and validation check
  • It does not work with PNDs using the ISO filesystem (and I don't see a good reason for why it needs to do so as SquashFS is the superior FS imo)
  • It only extracts PNG icon data (although probably 99% of the icons are PNG)
  • PXML "wizard" for creating a quick-and-dirty PXML suitable for most cases with an easier (non-tree based) GUI
  • better PXML element interface (buttons instead of a drop-down)
  • context menu for adding PXML elements
  • options for chosing the default PND extraction path (use program's folder, use user specified folder, ask every time for location)
  • Linux version (I am trying to set-up Lazarus, but I can't get the Virtual Tree View component to compile :S )
  • keeping the cmd open after executing chmod or squashtools
What will it (probably) never do?
  • Have a browsing interface as good as 7-zip's and the same functionality
This is a beta release, so a lot of bugs are to be expected and the program has a few known "quirks":
  • Currently it calls chmod 755 on all the PND data to ensure all necessary files are given the "executable" flag, this works, but obviously is not the "nice" way to do it
  • It only loads PNG icons from a PND
  • You will need to place it somewhere it has direct write access or execute the Program as administrator
  • It needs half of the cygwin dlls and the cygwin chmod because Windows does not know the "executable" file-flag (well it does, but modifying it is complicated and calling chmod was easier to do for now)
  • Only for Windows atm!
  • Drag&Drop is always recursive
  • You cannot replace files in a PND, trying to do so will simply result in no change. Delete the old files and add the new ones as a temporary work-around (this is also why moving nodes sometimes does not seem to work)
  • When creating a PXML file you have to create the HF5 compatibility elements (title and description) first (second respective entry in the drop-down) and then the grouped HF6 elements
Download it here (Windows only, ZIP, 2MB)
To "install" just extract the contents of the archive anywhere (the program will have write access, see above).
Current version: 0.3.6beta, built 28.07.2011
This is the beta version (PXMLTools branch), but core functionality is not affected, it just adds the WIP PXML editor.
Source: Public GIT --- ZIP (last-update 05.06.2011, master)


---The main interface---|---PXML Editor---

How it works:
When creating a PND no actual data is handled until you press the "Create PND" button, after which it will copy all data to a folder called "temp" and then call chmod and mksquashfs on that.
When opening a PND it will extract (unsquashfs) the contents to a folder called "temp2" and add that folder to the tree-view, also it extracts the PXML and icon to a folder called "meta".
If you want to access the data contained in the PND you can simply copy it from those folders.
The folders are located next to the program exe and will be wiped before each respective operation.
It is safe to remove those folders if you want to clear temporary data.

Please try it, but be careful when doing so - I am not to be held responsible when data is lost or damaged, make back-ups.


The PXML editor is not very user-friendly at the moment, but I wanted to focus on getting all the functionality in there and the next step will be creating a proper interface (especially for adding elements). I plan to make most of it context sensitive.
For the moment just open an existing PXML file or create a new one from scratch, select elements to add from the drop-down box (those saying package will be added to the package element, those saying application...) and click "add".
Multiple application elements are supported as well as every other part of the specification (HF6) - to add elements to a specific application element, just select it or a child node of it.
In order to add multiple categories and sub-categories you will have to create the category first, select it (which should happen automatically) and then add the sub-category.

To edit an element just select it from the tree-view, all attributes will be displayed on the right.
Attributes with a grey name text (startdir= for example) or the ones saying (optional) are optional and can be left blank, the rest should be filled in order for the PXML to work.

There currently is no proper validation part, except for the edit fields only allowing certain chars and a maximum number of elements can be created.
Required attributes, elements or faulty ones won't be reported. (yet)

To remove elements right click on them and select "delete".

The description part displays help and information about the currently selected element, it also has some information about the attributes, allowed data, recommended data, etc. So read that if you don't know what to do.

Any bug report, feature request, layout request, general comment or anything else is greatly appreciated :)
Also the program currently uses the default Delphi-icon, which looks pretty shitty, a proper replacement icon would be great :)

foxblock out
StreaK said:
Foxblock, It looks very professional. Too bad it's not working via WINE [squashfs and unsquashfs win32 didnt worked on wine, but pndtools itself working..] :/

Too bad it does not work in wine, but the squashtools are using cygwin, so by using it in Wine you basically use a Linux wrapper in a Windows wrapper... yeah ;)
The plan is to port this over to Linux natively anyway, but so far I cannot get the Virtual Tree View component to compile in my Lazarus set-up (although it should).
But I admit, that I have not spent that much time on it as I wanted to focus on getting the actual program (semi-)finished first.

Code is all open though and any help or support is welcome (not only in regards with porting it to Linux).
Last edited by a moderator:
Update to the beta version have been released:

Version 0.3.6b changes:
  • Fixed edit boxes for language and mime input types not accepting valid characters
  • Fixed last open edit not being saved when pressing OK button
  • Changed default PXML file to include all necessary elements and attributes for validation (this is the file which you start to work with when creating a new PXML - so the tree won't be empty be default now, you obviously still can add or remove elements, although the latter is not recommended as it will make the PXML invalid)
Especially the last change should improve PXML creation process for new users as all necessary elements are already there, you just can add icon,previewpics, etc. and obviously change the default data!