The "FilesInZip" Command |
This command is a less flexible alternative to the "File" and "Files" commands and you would probably only use it where a zip file contains large numbers of files which make the msi creation and installation much slower.
You can use the "UnzipImage" macro to extract the files at msi build time and then add the extracted files.
These are the main predefined options and parameter defaults:
#define? FILESINZIP_INSTALL_DIR_KEY_IUNZIP INSTALLDIR ;;Install time location for EXE #define? FILESINZIP_INSTALL_DIR_KEY_ZIPS INSTALLDIR ;;Install time location for included zips (not where they get unzipped to) #define? FILESINZIP_INSTALL_UNINSTALL_SEQ <-DuplicateFiles ;;"<-RemoveFolders" doesn't work!!!! It leaves the folder behind #define? FILESINZIP_INSTALL_CONDITION <$CONDITION_EXCEPT_UNINSTALL> #define? FILESINZIP_UNINSTALL_CONDITION <$CONDITION_UNINSTALL_ONLY> #define? FILESINZIP_INSTALL_ZIP_CONTENTS_LIST Y ;;Logging is great unless your zip is so big it takes excessive time #define? FILESINZIP_INSTALL_ZIP_CONTENTS_TEST Y ;;Testing the zip is great (it may excplain a otherwise hard to unzip error) unless your zip is so big it takes excessive time #define? FILESINZIP_INSTALL_INSTALL_TYPE System #define? FILESINZIP_INSTALL_UNINSTALL_TYPE System #define? FILESINZIP_UNZIP_EXE_SOURCE .\IUNZIP.EXE ;;By default expect in the current directory #define? FILESINZIP_UNZIP_EXE_ROWKEY iUnZip.exe #define? FILESINZIP_UNZIP_OPTION_MARKER_UNPACK_DIR {UnpackRoot} ;;Use "{UnpackRoot}" to represent the install/unpack directory #define? FILESINZIP_UNZIP_OPTION_MARKER_ZIP_FILE {ZipFile} ;;Use "{UnpackRoot}" to represent the install/unpack directory #define? DEFAULT_FILESINZIP_UNZIP_OPTIONS -o -d "<$FILESINZIP_UNZIP_OPTION_MARKER_UNPACK_DIR>" "<$FILESINZIP_UNZIP_OPTION_MARKER_ZIP_FILE>"
The macro takes these parameters:
With the default "ZipOptions" the directory structure within the zip file will be preserved when extracted.
If not supplied then the default comes from "DEFAULT_FILESINZIP_UNZIP_OPTIONS", if you provide your own you need to include both "markers" demonstrated by the default.
The name of the exe program whose command line you are defining should be defined in "FILESINZIP_UNZIP_EXE_SOURCE".
If you provide "Y" to this parameter then the complete directory tree (so all files) including "InstallRootDir" will be removed.
EXAMPLE |
<$FilesInZip ZipFile=^Stuff.zip^ InstallRootDir="[INSTALLDIR]\Stuff"> <$FilesInZip ZipFile=^zips\GraphViz.zip^ INSTALLROOTDIR="[INSTALLDIR]\GraphViz" OnUninstallDeleteRootFolder="Y">