Idea for better compression
Until now, the datablock optimizer reudces the size of the installer only when the same file is referenced at least twice in the script. But what about almost same files, or files of the same type (example : source files) that have a lot of redundaancy across the files? Why not putting some king of solid archiving ? It would require some kind of sorting, by file extension first, then by filename alphabetically.
Here is the contents of Rarfiles.lst, a list that RAR/WinRAR uses to sort the files for solid archiving. Sorry for the french header.
; Liste pour ordonner les fichiers d'une archive solide
;
; Vous pouvez modifier l'ordre de tri que RAR utilise lorsque qu'il ajoute
; des fichiers à une archive solide
;
; Ce fichier peut contenir des noms de fichiers, des caractères génériques
; ou une entrée spéciale : $default. Cette entrée définit la position des
; fichiers qui ne correspondent pas aux autres entrées de ce fichier. Les
; lignes commençant par le symbole ";" sont considérés comme commentaires
; et ne donc pas traités.
;
; Placez ce fichier dans le même répertoire que RAR.EXE.
;
; Astuces pour améliorer le taux et la vitesse de la compression :
;
; - les fichiers contenant des informations similaires devraient être
: groupés ensemble dans l'archive si possible;
; - les fichiers fréquemment utilisés devraient être placés au début.
;
file_id.diz
descript.ion
read.*
readme.*
*.doc
*.txt
*.htm
*.html
*.shtml
*.lst
*.log
*.ini
*.bat
*.cmd
*.h
*.c
*.cpp
*.asm
*.bas
*.inf
*.bak
*.rtf
*.hlp
*.com
*.exe
*.dll
*.ovr
*.ovl
*.obj
*.lib
*.sys
*.drv
*.bin
*.bmp
*.wav
*.stm
$default
*.gif
*.jpg
*.tif
*.arj
*.ha
*.lzh
*.rar
*.zip
This kind of list could be easily be put nsisconf.nsi with a parsing similar to InstType. So, we would have in a NSI script, for example :
FileType "descript.ion"
FileType "read.*"
FileType "readme.*"
FileType "*.doc"
FileType "*.txt"
FileType "*.htm"
FileType "*.html"
FileType "*.shtml"
FileType "*.lst""
FileType "*.log"
FileType "*.ini"
.
.
.