├── .gitignore ├── InnoUnpack.dpr ├── InnoUnpack.res ├── InnoUnpack.txt ├── LICENSE ├── UnpackMain.dfm ├── UnpackMain.pas ├── distribution ├── WizImage-JR.bmp ├── WizSmallImage-JR.bmp ├── iu20.iss ├── license-de.rtf ├── license-en.rtf ├── license-es.rtf ├── license-fr.rtf └── license-it.rtf ├── innounp-1 ├── bin │ └── innounp-1.zip ├── innounp.htm ├── instructions.txt ├── readme.md └── sources │ ├── ArcFour.pas │ ├── CallOptimizer.pas │ ├── CmnFunc2.pas │ ├── Compress.pas │ ├── CompressList │ ├── CompressTemplate.pas │ ├── CustomVersions.pas │ ├── Extract.pas │ ├── Extract4000.pas │ ├── FileClass.pas │ ├── FileNull.pas │ ├── InstFunc.pas │ ├── Int64Em.pas │ ├── LZMADecomp.pas │ ├── LZMADecompSmall.pas │ ├── LzmaDecode │ └── LzmaDecodeInno.obj │ ├── MD5.pas │ ├── Main.pas │ ├── MsgIDs.pas │ ├── Msgs.pas │ ├── MyTypes.pas │ ├── PathFunc.pas │ ├── REPLACE.EXE │ ├── RebuildScript.pas │ ├── SHA1.pas │ ├── SetupEnt.pas │ ├── SetupLdr.pas │ ├── StripReloc.dpr │ ├── Struct.pas │ ├── Struct1321.pas │ ├── Struct1325.pas │ ├── Struct2007.pas │ ├── Struct2008.pas │ ├── Struct2011.pas │ ├── Struct2017.pas │ ├── Struct2018.pas │ ├── Struct3000.pas │ ├── Struct3001.pas │ ├── Struct3002.pas │ ├── Struct3003.pas │ ├── Struct3004.pas │ ├── Struct3005.pas │ ├── Struct3006.pas │ ├── Struct3007.pas │ ├── Struct5105.pas │ ├── Struct5107.pas │ ├── Struct5203.pas │ ├── Struct5205.pas │ ├── Struct5205u.pas │ ├── Struct5300.pas │ ├── Struct5300u.pas │ ├── Struct5303.pas │ ├── Struct5303u.pas │ ├── Struct5305.pas │ ├── Struct5305u.pas │ ├── Struct5306.pas │ ├── Struct5306u.pas │ ├── Struct5307.pas │ ├── Struct5307u.pas │ ├── Struct5308.pas │ ├── Struct5308u.pas │ ├── Struct5309.pas │ ├── Struct5309u.pas │ ├── Struct5310.pas │ ├── Struct5310u.pas │ ├── Struct5402.pas │ ├── Struct5402u.pas │ ├── Struct5402ur.pas │ ├── Struct5403.pas │ ├── Struct5500.pas │ ├── Struct5500r.pas │ ├── Struct5500u.pas │ ├── Struct5500ur.pas │ ├── Struct5506.pas │ ├── Struct5506u.pas │ ├── Struct5507.pas │ ├── Struct5507u.pas │ ├── Struct5602.pas │ ├── Struct5602u.pas │ ├── Struct6100u.pas │ ├── Struct6210u.pas │ ├── Struct6300u.pas │ ├── StructJoin.pas │ ├── StructList │ ├── StructTemplate.pas │ ├── Version.inc │ ├── VersionInfo.inc │ ├── a.bat │ ├── bin.bat │ ├── bzip │ ├── bzlib.obj │ ├── crctable.obj │ ├── decompress.obj │ ├── huffman.obj │ └── randtable.obj │ ├── bzlib.pas │ ├── clean.bat │ ├── crypt │ └── ISCrypt.obj │ ├── empty.pas │ ├── innounp.dpr │ ├── innounp.htm │ ├── innounp.manifest │ ├── innounp.res │ ├── licenses │ ├── InnoSetup.txt │ ├── bzip2.txt │ ├── gpl.txt │ ├── lgpl.txt │ ├── lzma.txt │ └── zlib.txt │ ├── lzma2 │ └── Decoder │ │ ├── ISLzma2Dec.obj │ │ ├── ISLzmaDec.obj │ │ └── compiling.txt │ ├── prep.bat │ ├── prepver.bat │ ├── res.bat │ ├── rls.bat │ ├── src.bat │ ├── struct3008.PAS │ ├── struct4000.pas │ ├── struct4001.pas │ ├── struct4002.pas │ ├── struct4003.pas │ ├── struct4004.pas │ ├── struct4005.pas │ ├── struct4006.pas │ ├── struct4007.pas │ ├── struct4008.pas │ ├── struct4009.pas │ ├── struct4010.pas │ ├── struct4011.pas │ ├── struct4100.pas │ ├── struct4101.pas │ ├── struct4102.pas │ ├── struct4103.pas │ ├── struct4104.pas │ ├── struct4105.pas │ ├── struct4106.pas │ ├── struct4107.pas │ ├── struct4108.pas │ ├── struct4200.pas │ ├── struct4201.pas │ ├── struct4202.pas │ ├── struct4203.pas │ ├── struct4204.pas │ ├── struct4205.pas │ ├── struct4206.pas │ ├── struct4207.pas │ ├── struct5000.pas │ ├── struct5001.pas │ ├── struct5002.pas │ ├── struct5003.pas │ ├── struct5004.pas │ ├── struct5100.pas │ ├── struct5102.pas │ ├── struct5110.pas │ ├── struct5113.pas │ ├── struct5200.pas │ ├── struct5201.pas │ ├── struct6000u.pas │ ├── version.rc │ ├── version.rc.in │ ├── version.res │ ├── zlib.pas │ ├── zlib │ ├── adler32.obj │ ├── crc32.obj │ ├── inffast.obj │ ├── inflate.obj │ ├── inftrees.obj │ ├── trees.obj │ └── zutil.obj │ ├── zlib4008.pas │ └── zlib4107.pas ├── innounp-2 ├── bin │ └── innounp-2.zip ├── docs │ ├── Instructions.txt │ └── innounp.htm ├── readme.md └── sources │ ├── ArcFour.pas │ ├── CallOptimizer.pas │ ├── ChaCha20.pas │ ├── CmnFunc2.pas │ ├── Compress.pas │ ├── CompressList │ ├── CompressTemplate.pas │ ├── CompressVer4008.pas │ ├── CompressVer4107.pas │ ├── Compression.LZMA1SmallDecompressor.pas │ ├── Compression.LZMADecompressor.pas │ ├── CustomVersions.pas │ ├── Extract.pas │ ├── Extract4000.pas │ ├── Extract6400.pas │ ├── FileClass.pas │ ├── FileNull.pas │ ├── InstFunc.pas │ ├── Int64Em.pas │ ├── MD5.pas │ ├── Main.pas │ ├── MsgIDs.pas │ ├── Msgs.pas │ ├── MyTypes.pas │ ├── PBKDF2.pas │ ├── PathFunc.pas │ ├── RebuildScript.pas │ ├── SHA1.pas │ ├── SHA256.pas │ ├── SetupEnt.pas │ ├── SetupLdr.pas │ ├── Struct.pas │ ├── Struct1321.pas │ ├── Struct1325.pas │ ├── Struct2007.pas │ ├── Struct2008.pas │ ├── Struct2011.pas │ ├── Struct2017.pas │ ├── Struct2018.pas │ ├── Struct3000.pas │ ├── Struct3001.pas │ ├── Struct3002.pas │ ├── Struct3003.pas │ ├── Struct3004.pas │ ├── Struct3005.pas │ ├── Struct3006.pas │ ├── Struct3007.pas │ ├── Struct5105.pas │ ├── Struct5107.pas │ ├── Struct5203.pas │ ├── Struct5205.pas │ ├── Struct5205u.pas │ ├── Struct5300.pas │ ├── Struct5300u.pas │ ├── Struct5303.pas │ ├── Struct5303u.pas │ ├── Struct5305.pas │ ├── Struct5305u.pas │ ├── Struct5306.pas │ ├── Struct5306u.pas │ ├── Struct5307.pas │ ├── Struct5307u.pas │ ├── Struct5308.pas │ ├── Struct5308u.pas │ ├── Struct5309.pas │ ├── Struct5309u.pas │ ├── Struct5310.pas │ ├── Struct5310u.pas │ ├── Struct5402.pas │ ├── Struct5402u.pas │ ├── Struct5402ur.pas │ ├── Struct5403.pas │ ├── Struct5500.pas │ ├── Struct5500r.pas │ ├── Struct5500u.pas │ ├── Struct5500ur.pas │ ├── Struct5506.pas │ ├── Struct5506u.pas │ ├── Struct5507.pas │ ├── Struct5507u.pas │ ├── Struct5601.pas │ ├── Struct5601u.pas │ ├── Struct6100u.pas │ ├── Struct6210u.pas │ ├── Struct6300u.pas │ ├── Struct6400u.pas │ ├── Struct6402u.pas │ ├── Struct6403u.pas │ ├── StructJoin.pas │ ├── StructList │ ├── StructTemplate.pas │ ├── Version.inc │ ├── VersionInfo.inc │ ├── a.bat │ ├── bin.bat │ ├── bzip │ ├── bzlib.obj │ ├── crctable.obj │ ├── decompress.obj │ ├── huffman.obj │ └── randtable.obj │ ├── bzlib.pas │ ├── clean.bat │ ├── crypt │ └── ISCrypt.obj │ ├── empty.pas │ ├── innounp.dpr │ ├── innounp_Icon.ico │ ├── licenses │ ├── InnoSetup.txt │ ├── bzip2.txt │ ├── gpl.txt │ ├── lgpl.txt │ ├── lzma.txt │ └── zlib.txt │ ├── prep.bat │ ├── prepver.bat │ ├── res.bat │ ├── rls.bat │ ├── src.bat │ ├── struct3008.PAS │ ├── struct4000.pas │ ├── struct4001.pas │ ├── struct4002.pas │ ├── struct4003.pas │ ├── struct4004.pas │ ├── struct4005.pas │ ├── struct4006.pas │ ├── struct4007.pas │ ├── struct4008.pas │ ├── struct4009.pas │ ├── struct4010.pas │ ├── struct4011.pas │ ├── struct4100.pas │ ├── struct4101.pas │ ├── struct4102.pas │ ├── struct4103.pas │ ├── struct4104.pas │ ├── struct4105.pas │ ├── struct4106.pas │ ├── struct4107.pas │ ├── struct4108.pas │ ├── struct4200.pas │ ├── struct4201.pas │ ├── struct4202.pas │ ├── struct4203.pas │ ├── struct4204.pas │ ├── struct4205.pas │ ├── struct4206.pas │ ├── struct4207.pas │ ├── struct5000.pas │ ├── struct5001.pas │ ├── struct5002.pas │ ├── struct5003.pas │ ├── struct5004.pas │ ├── struct5100.pas │ ├── struct5102.pas │ ├── struct5110.pas │ ├── struct5113.pas │ ├── struct5200.pas │ ├── struct5201.pas │ ├── struct6000u.pas │ ├── zlib.pas │ ├── zlib │ ├── adler32.obj │ ├── crc32.obj │ ├── inffast.obj │ ├── inflate.obj │ ├── inftrees.obj │ ├── trees.obj │ └── zutil.obj │ ├── zlib4008.pas │ └── zlib4107.pas ├── languages ├── dialogs │ ├── de │ │ ├── dialogs.mo │ │ └── dialogs.po │ ├── dialogs.po │ ├── es │ │ ├── dialogs.mo │ │ └── dialogs.po │ ├── fr │ │ ├── dialogs.mo │ │ └── dialogs.po │ ├── hu │ │ ├── dialogs.mo │ │ └── dialogs.po │ ├── ignore.po │ ├── it │ │ ├── dialogs.mo │ │ └── dialogs.po │ └── zh │ │ ├── dialogs.mo │ │ └── dialogs.po ├── project │ ├── de │ │ ├── Language.cfg │ │ ├── default.mo │ │ └── default.po │ ├── default.po │ ├── es │ │ ├── default.mo │ │ ├── default.po │ │ └── language.cfg │ ├── fr │ │ ├── default.mo │ │ ├── default.po │ │ └── language.cfg │ ├── hu │ │ ├── default.mo │ │ ├── default.po │ │ └── language.cfg │ ├── ignore.po │ ├── it │ │ ├── default.mo │ │ ├── default.po │ │ └── language.cfg │ ├── language.cfg │ └── zh │ │ ├── default.mo │ │ ├── default.po │ │ └── language.cfg ├── tools │ ├── PoStrip.zip │ └── readme.md └── units │ ├── de │ ├── units.mo │ └── units.po │ ├── es │ ├── units.mo │ └── units.po │ ├── fr │ ├── units.mo │ └── units.po │ ├── hu │ ├── units.mo │ └── units.po │ ├── ignore.po │ ├── it │ ├── units.mo │ └── units.po │ ├── units.po │ └── zh │ ├── units.mo │ └── units.po ├── pack-view-u.ico ├── pack-view.ico ├── readme.md └── units ├── FileConsts.pas ├── GnuGetText.pas ├── IniFileUtils.pas ├── InitProg.pas ├── InputString.dfm ├── InputString.pas ├── LangUtils.pas ├── ListUtils.pas ├── MsgDialogs.pas ├── NumberUtils.pas ├── PathUtils.pas ├── Placeholders.pas ├── SelectDlg.dfm ├── SelectDlg.pas ├── SelectFromListDlg.dfm ├── SelectFromListDlg.pas ├── ShellDirDlg.dfm ├── ShellDirDlg.pas ├── StringUtils.pas ├── UnitConsts.pas ├── Vcl.Shell.ShellConsts.pas ├── Vcl.Shell.ShellCtrls.pas ├── WinApiUtils.pas ├── WinShell.pas └── WinUtils.pas /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | innounp-1/readme.md.backup 3 | readme.md.backup 4 | *.backup 5 | readme.md.backup 6 | *.~md 7 | -------------------------------------------------------------------------------- /InnoUnpack.dpr: -------------------------------------------------------------------------------- 1 | program InnoUnpack; 2 | 3 | uses 4 | GnuGetText in 'units\GnuGetText.pas', 5 | LangUtils in 'units\LangUtils.pas', 6 | Vcl.Forms, 7 | Vcl.Graphics, 8 | UnpackMain in 'UnpackMain.pas' {MainForm}, 9 | ShellDirDlg in 'units\ShellDirDlg.pas' {ShellDirDialog}, 10 | SelectFromListDlg in 'units\SelectFromListDlg.pas' {SelectFromListDialog}; 11 | 12 | {$R *.res} 13 | 14 | begin 15 | TP_GlobalIgnoreClass(TFont); 16 | // Subdirectory in AppData for user configuration files and supported languages 17 | InitTranslation(['delphi10','units']); 18 | 19 | Application.Initialize; 20 | Application.MainFormOnTaskbar := True; 21 | Application.CreateForm(TMainForm, MainForm); 22 | Application.CreateForm(TShellDirDialog, ShellDirDialog); 23 | Application.CreateForm(TSelectFromListDialog, SelectFromListDialog); 24 | Application.Run; 25 | end. 26 | -------------------------------------------------------------------------------- /InnoUnpack.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/InnoUnpack.res -------------------------------------------------------------------------------- /InnoUnpack.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/InnoUnpack.txt -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Jürgen Rathlev 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /UnpackMain.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/UnpackMain.pas -------------------------------------------------------------------------------- /distribution/WizImage-JR.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/distribution/WizImage-JR.bmp -------------------------------------------------------------------------------- /distribution/WizSmallImage-JR.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/distribution/WizSmallImage-JR.bmp -------------------------------------------------------------------------------- /distribution/iu20.iss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/distribution/iu20.iss -------------------------------------------------------------------------------- /distribution/license-de.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg932\deff0\nouicompat{\fonttbl{\f0\fswiss\fprq2\fcharset128 Tahoma;}{\f1\fswiss\fprq2\fcharset0 Tahoma;}} 2 | {\*\generator Riched20 10.0.19041}\viewkind4\uc1 3 | \pard\nowidctlpar\kerning1\b\f0\fs20\lang1031 Copyright \f1\'a9 2025\f0 , \f1 Dr. \f0 J. Rathlev, 24222 Schwentinental\b0\par 4 | \par 5 | \b 1. Nutzung des Programms \b0\par 6 | 7 | \pard\li283\sl276\slmult1 Das vorliegende Programm darf kostenlos von jedermann genutzt werden. Das gilt auch f\f1\'fcr alle Arten von \'f6ffentlichen Einrichtungen, f\'fcr Vereine und sonst. nicht kommerziell betriebene Organisationen sowie f\'fcr privatrechtlich organisierte Unternehmen.\par 8 | \f0 Eine Gew\f1\'e4hrleistung f\'fcr die Funktionsf\'e4higkeit des Programms und di\f0 e Korrektheit der \f1 E\f0 rgebnisse, sowie eine Haftung f\f1\'fcr Sch\'e4den an der Hard- oder Software des Benutzers wird nicht \'fcbernommen.\par 9 | 10 | \pard\nowidctlpar\par 11 | \b 2. Weitergabe des Programms\b0\par 12 | 13 | \pard\li283\sl300\slmult0 Das Programm darf ohne Einschr\'e4nkungen weitergegeben werden, vorausgesetzt die Originaldateien, wie sie vom Autor bereitgestellt wurden, bleiben unver\'e4ndert. Es darf daf\'fcr keine Geb\'fchr verlangt werden.\par 14 | Die Nutzung oder Verwertung als Bestandteil von kommerziellen Produkten ist ohne Zustimmung des Autors untersagt.\par 15 | 16 | \pard\nowidctlpar\par 17 | \b 3. Kontakt mit dem Autor\b0\par 18 | 19 | \pard\li283\sl300\slmult0 Dr. J\'fcrgen Rathlev\par 20 | D-24222 Schwentinental\par 21 | E-Mail: kontakt(a)rathlev-home.de\par 22 | 23 | \pard\nowidctlpar\par 24 | \b Copyright \'a9 2025\f0 , \f1 Dr. \f0 J. Rathlev, 24222 Schwentinental\b0\par 25 | \par 26 | \par 27 | } 28 | -------------------------------------------------------------------------------- /distribution/license-en.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg932\deff0\nouicompat{\fonttbl{\f0\fswiss\fprq2\fcharset128 Tahoma;}{\f1\fswiss\fprq2\fcharset0 Tahoma;}} 2 | {\*\generator Riched20 10.0.19041}\viewkind4\uc1 3 | \pard\nowidctlpar\kerning1\b\f0\fs20\lang1031 Copyright \f1\'a9 2025, Dr. \f0 J. Rathlev, 24222 Schwentinental, Germany\b0\par 4 | \par 5 | \b 1. Using the program\b0\par 6 | 7 | \pard\li283\sl300\slmult0 The program may be used by anyone, in any way, for any purpose, without charge. There is no warranty either for the correct operation of the program or for the correctness of the results. The author shall not be liable for any possible damages to hardware and software arising out of use of the program.\par 8 | 9 | \pard\nowidctlpar\par 10 | \b 2. Distributing the program\b0\par 11 | 12 | \pard\li283\sl300\slmult0 The program may be distributed by any means, provided that the original files as supplied by the author remain intact and no charge is made other than for reasonable distribution costs.\par 13 | The program may not be distributed as a component of any commercial product without a prior license agreement with the author.\par 14 | 15 | \pard\nowidctlpar\par 16 | \b 3. Contacting the author\b0\par 17 | 18 | \pard\li283\sl300\slmult0 Dr. Juergen Rathlev\par 19 | \f1 24222 Schwentinental, Germany\f0\par 20 | E-Mail: \f1 kontakt\f0 (a)rathlev-home.de\par 21 | 22 | \pard\nowidctlpar\par 23 | \b Copyright \f1\'a9 2025, Dr. \f0 J. Rathlev, \f1 24222 Schwentinental, Germany\b0\f0\par 24 | \par 25 | } 26 | -------------------------------------------------------------------------------- /distribution/license-es.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg932\deff0\nouicompat{\fonttbl{\f0\fswiss\fprq2\fcharset128 Tahoma;}{\f1\fswiss\fprq2\fcharset0 Tahoma;}} 2 | {\*\generator Riched20 10.0.19041}\viewkind4\uc1 3 | \pard\nowidctlpar\kerning1\b\f0\fs20\lang1031 Copyright \f1\'a9 2025, Dr. \f0 J. Rathlev, 24222 Schwentinental, Alemania\b0\par 4 | \par 5 | \b 1. Uso del programa \b0\par 6 | 7 | \pard\li283\sl300\slmult0 El programa puede ser utilizado por cualquier persona, de cualquier forma y con cualquier fin, sin coste alguno. No se garantiza su correcto funcionamiento ni la exactitud de los resultados. El autor no se hace responsable de posibles daños en hardware y software, derivados del uso del programa.\par 8 | 9 | \pard\nowidctlpar\par 10 | \b 2. Distribución del programa\b0\par 11 | 12 | \pard\li283\sl300\slmult0 El programa puede distribuirse por cualquier medio, siempre que los ficheros originales suministrados por el autor permanezcan intactos y no se cobre más que unos costes razonables de distribución.\par 13 | El programa no puede distribuirse como parte de ningún producto comercial sin un acuerdo de licencia previo con el autor.\par 14 | 15 | \pard\nowidctlpar\par 16 | \b 3. Contactar con el autor\b0\par 17 | 18 | \pard\li283\sl300\slmult0 Dr. Juergen Rathlev\par 19 | \f1 24222 Schwentinental, Alemania\f0\par 20 | Correo-E: \f1 kontakt\f0 (a)rathlev-home.de\par 21 | 22 | \pard\nowidctlpar\par 23 | \b Copyright \f1\'a9 2025, Dr. \f0 J. Rathlev, \f1 24222 Schwentinental, Alemania\b0\f0\par 24 | \par 25 | } 26 | -------------------------------------------------------------------------------- /distribution/license-fr.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg932\deff0\nouicompat{\fonttbl{\f0\fswiss\fprq2\fcharset128 Tahoma;}{\f1\fswiss\fprq2\fcharset0 Tahoma;}} 2 | {\*\generator Riched20 10.0.19041}\viewkind4\uc1 3 | \pard\nowidctlpar\kerning1\b\f0\fs20\lang1031 Copyright \f1\'a9 2025, Dr. \f0 J. Rathlev, 24222 Schwentinental, \f1 Allemagne\b0\f0\par 4 | \par 5 | \b 1. Utilisation du programme\b0\par 6 | 7 | \pard\li283\sl300\slmult0 Le programme peut \f1\'eatre utilis\'e9 par n'importe qui, de n'importe quelle mani\'e8re, \'e0 n'importe quelle fin, sans frais. Il n'y a aucune garantie quant au fonctionnement correct du programme ou \'e0 l'exactitude des r\'e9sultats. L'auteur n'est pas responsable des dommages \'e9ventuels caus\'e9s au mat\'e9riel et aux logiciels par l'utilisation du programme.\f0\par 8 | 9 | \pard\nowidctlpar\par 10 | \b 2. Diffusion du programme\b0\par 11 | 12 | \pard\li283\sl300\slmult0 Le programme peut \f1\'eatre distribu\'e9 par n'importe quel moyen, \'e0 condition que les fichiers originaux fournis par l'auteur restent intacts et qu'aucun frais ne soit factur\'e9, \'e0 l'exception des frais de distribution raisonnables.\par 13 | Le programme ne peut \'eatre distribu\'e9 en tant que composant d'un produit commercial sans un accord de licence pr\'e9alable avec l'auteur.\f0\par 14 | 15 | \pard\nowidctlpar\par 16 | \b 3. Contacter l'auteur\b0\par 17 | 18 | \pard\li283\sl300\slmult0 Dr. Juergen Rathlev\par 19 | \f1 24222 Schwentinental, Allemagne\f0\par 20 | \f1 Courriel:\f0 \f1 kontakt\f0 (a)rathlev-home.de\par 21 | 22 | \pard\nowidctlpar\par 23 | \b Copyright \f1\'a9 2025, Dr. \f0 J. Rathlev, \f1 24222 Schwentinental, Allemagne\b0\f0\par 24 | \par 25 | } 26 | -------------------------------------------------------------------------------- /distribution/license-it.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1040\deflangfe1040{\fonttbl{\f0\fswiss\fprq2\fcharset0 Tahoma;}} 2 | {\*\generator Riched20 10.0.19041}{\*\mmathPr\mdispDef1\mwrapIndent1440 }\viewkind4\uc1 3 | \pard\nowidctlpar\kerning1\b\f0\fs20\lang1031 Copyright \'a9 2025, Dr. J. Rathlev, 24222 Schwentinental, Germany\b0\par 4 | \par 5 | \b 1. Uso del programma\b0\par 6 | 7 | \pard\nowidctlpar\li283\sl300\slmult0 Il programma pu\'f2 essere usato da chiunque, in qualsiasi modo, per qualsiasi scopo, senza alcun addebito. Non vi \'e8 alcuna garanzia n\'e9 per il corretto funzionamento del programma n\'e9 per la correttezza dei risultati. L'autore non \'e8 responsabile per eventuali danni all'hardware e al software derivanti dall'uso del programma.\par 8 | 9 | \pard\nowidctlpar\par 10 | \b 2. Distribuzione del programma\b0\par 11 | 12 | \pard\nowidctlpar\li283\sl300\slmult0 Il programma pu\'f2 essere distribuito con qualsiasi mezzo, a condizione che i file originali forniti dall'autore rimangano intatti e non venga addebitato alcun costo diverso da ragionevoli costi di distribuzione.\par 13 | Il programma non pu\'f2 essere distribuito come componente di alcun prodotto commerciale senza un previo accordo di licenza con l'autore.\par 14 | 15 | \pard\nowidctlpar\par 16 | \b 3. Per contattare l\lquote autore\b0\par 17 | 18 | \pard\nowidctlpar\li283\sl300\slmult0 Dr. Juergen Rathlev\par 19 | D-24222 Schwentinental\par 20 | E-Mail: kontakt(a)rathlev-home.de\par 21 | 22 | \pard\nowidctlpar\par 23 | \b Copyright \'a9 2025, Dr. J. Rathlev, 24222 Schwentinental, Germany\b0\par 24 | \par 25 | } 26 | -------------------------------------------------------------------------------- /innounp-1/bin/innounp-1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-1/bin/innounp-1.zip -------------------------------------------------------------------------------- /innounp-1/instructions.txt: -------------------------------------------------------------------------------- 1 | Instructions 2 | ============ 3 | 4 | Before compiling the project, the structure files of the different Inno Setup 5 | versions must be prepared. 6 | 7 | 1. Requirements: 8 | ---------------- 9 | - The unit "Struct.pas" of all versions to be supported each renamed to "Structvvvvu". 10 | Inside the unit the name of the unit must be adapted. 11 | - "StructTemplate.pas" as template for the structure interface units 12 | - The list "StructList" of all supported versions 13 | - "CompressTemplate.pas" as template for the zlib compression versions 14 | - The list "CompressList" of all supported zlib versions 15 | - Edit "VersionInfo.inc" to hold the correct version of innounp application 16 | 17 | 2. Preparation: 18 | --------------- 19 | - Generate the units "StructVervvvvu" as interfaces to the above mentioned 20 | structure unit. 21 | - Generate the include file "StructList.inc" 22 | - Generate the units "CompressVervvvv" 23 | - Generate the include file "CompressList.inc" 24 | - Generate the resource script "version.rc" from "VersionInfo.inc" 25 | - Compile "version.rc" to resource file ""version.res" 26 | 27 | To simplify the preparation, the batch script "prep.bat" can be used which will 28 | perform all these steps in one go. 29 | 30 | 3. Compiling 31 | ------------ 32 | All sources are adapted to use Unicode strings (native string type since Delphi 2009). 33 | Compilation was tested with Delphi 10 Seattle 34 | 35 | J. Rathlev, June 2024 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /innounp-1/readme.md: -------------------------------------------------------------------------------- 1 | ### Inno Setup Unpacker - Console version 2 | 3 | #### Unpacker for installations made by Inno Setup 4 | 5 | #### Supports Inno Setup versions 2.0.7 to 6.3.3 6 | 7 | ##### Branch of the project on [SourceForge](http://sourceforge.net/projects/innounp) 8 | 9 | [Inno Setup](http://www.jrsoftware.org/isinfo.php) is a popular program 10 | for making software installations. *Inno Setup Unpacker* is a console application 11 | to verify and get files out of the self-extracting executable. 12 | 13 | Since there have been no updates of the *SourceForge* project since 2020 and the 14 | source codes are not yet adapted to the current Delphi versions (Unicode strings are 15 | the native type since *Delphi 2009*), I have modified them so that they can be 16 | compiled with newer Delphi versions (tested with *Delphi 10 Seattle*). 17 | In addition, some errors have been fixed and new command line options (*-l*, *-i* and *-u*) were added, as well as exit codes to support the use in batch files. 18 | 19 | The install script is saved in UTF-8 format. 20 | 21 | The program has also been adapted to *Inno Setup* versions 6.2 and 6.3. 22 | 23 | [Application download](https://www.rathlev-home.de/index-e.html?tools/prog-e.html#unpack) 24 | 25 | -------------------------------------------------------------------------------- /innounp-1/sources/ArcFour.pas: -------------------------------------------------------------------------------- 1 | unit ArcFour; 2 | 3 | { 4 | Inno Setup 5 | Copyright (C) 1997-2004 Jordan Russell 6 | Portions by Martijn Laan 7 | For conditions of distribution and use, see LICENSE.TXT. 8 | 9 | Interface to ISCrypt.dll (ARCFOUR encryption/decryption) 10 | 11 | $jrsoftware: issrc/Projects/ArcFour.pas,v 1.2 2004/04/26 19:11:23 jr Exp $ 12 | modified but updatable 13 | } 14 | 15 | interface 16 | 17 | uses 18 | Windows; 19 | 20 | type 21 | TArcFourContext = record 22 | state: array[0..255] of Byte; 23 | x, y: Byte; 24 | end; 25 | 26 | function ArcFourInitFunctions(Module: HMODULE): Boolean; stdcall; 27 | procedure ArcFourInit(var Context: TArcFourContext; const Key; 28 | KeyLength: Cardinal); stdcall; 29 | procedure ArcFourCrypt(var Context: TArcFourContext; const InBuffer; 30 | var OutBuffer; Length: Cardinal); stdcall; 31 | procedure ArcFourDiscard(var Context: TArcFourContext; Bytes: Cardinal); stdcall; 32 | 33 | implementation 34 | 35 | {$L crypt\iscrypt.obj} 36 | 37 | {var 38 | _ISCryptGetVersion: function: Integer; stdcall; 39 | _ArcFourInit: procedure(var context: TArcFourContext; const key; 40 | key_length: Cardinal); stdcall; 41 | _ArcFourCrypt: procedure(var context: TArcFourContext; const in_buffer; 42 | var out_buffer; length: Cardinal); stdcall;} 43 | 44 | 45 | function ArcFourInitFunctions(Module: HMODULE): Boolean; 46 | begin 47 | (* _ISCryptGetVersion := GetProcAddress(Module, 'ISCryptGetVersion'); 48 | _ArcFourInit := GetProcAddress(Module, 'ArcFourInit'); 49 | _ArcFourCrypt := GetProcAddress(Module, 'ArcFourCrypt'); 50 | if Assigned(_ISCryptGetVersion) and Assigned(_ArcFourInit) and 51 | Assigned(_ArcFourCrypt) then begin 52 | { Verify that the DLL's version is what we expect } 53 | Result := (_ISCryptGetVersion = 1); 54 | end 55 | else begin 56 | Result := False; 57 | _ISCryptGetVersion := nil; 58 | _ArcFourInit := nil; 59 | _ArcFourCrypt := nil; 60 | end*) 61 | Result:=true; 62 | end; 63 | 64 | procedure ArcFourInit(var Context: TArcFourContext; const Key; 65 | KeyLength: Cardinal); 66 | external; 67 | {begin 68 | _ArcFourInit(Context, Key, KeyLength); 69 | end;} 70 | 71 | procedure ArcFourCrypt(var Context: TArcFourContext; const InBuffer; 72 | var OutBuffer; Length: Cardinal); 73 | external; 74 | {begin 75 | _ArcFourCrypt(Context, InBuffer, OutBuffer, Length); 76 | end;} 77 | 78 | procedure ArcFourDiscard(var Context: TArcFourContext; Bytes: Cardinal); 79 | begin 80 | ArcFourCrypt(Context, Pointer(nil)^, Pointer(nil)^, Bytes); 81 | end; 82 | 83 | end. 84 | -------------------------------------------------------------------------------- /innounp-1/sources/CallOptimizer.pas: -------------------------------------------------------------------------------- 1 | unit CallOptimizer; 2 | 3 | { 4 | Inno Setup 5 | Copyright (C) 1997-2004 Jordan Russell 6 | Portions by Martijn Laan 7 | For conditions of distribution and use, see LICENSE.TXT. 8 | 9 | Call Instruction Optimizer 10 | 11 | $jrsoftware: issrc/Projects/CallOptimizer.pas,v 1.3 2004/02/25 22:17:01 jr Exp $ 12 | } 13 | 14 | interface 15 | 16 | type 17 | TCallInstructionOptimizer = class 18 | private 19 | FEncode: Boolean; 20 | FOffset: LongWord; 21 | FAddr: LongWord; 22 | FAddrBytesLeft: Cardinal; 23 | public 24 | constructor Create(AEncode: Boolean); 25 | procedure Code(var Buffer; BufSize: Cardinal); 26 | end; 27 | 28 | implementation 29 | 30 | { TCallInstructionOptimizer } 31 | 32 | constructor TCallInstructionOptimizer.Create(AEncode: Boolean); 33 | begin 34 | inherited Create; 35 | FEncode := AEncode; 36 | FOffset := 5; { size of JMP/CALL xx xx xx xx } 37 | end; 38 | 39 | procedure TCallInstructionOptimizer.Code(var Buffer; BufSize: Cardinal); 40 | type 41 | PByteArray = ^TByteArray; 42 | TByteArray = array[0..$7FFFFFFE] of Byte; 43 | var 44 | P: PByteArray; 45 | I: Cardinal; 46 | begin 47 | P := @Buffer; 48 | I := 0; 49 | while I < BufSize do begin 50 | if FAddrBytesLeft = 0 then begin 51 | { Does it appear to be a CALL or JMP instruction with a relative 32-bit 52 | address? If so, we're going to change the address to be relative to the 53 | beginning instead of to the next instruction. } 54 | if (P[I] = $E8) or (P[I] = $E9) then begin 55 | FAddr := FOffset; 56 | if not FEncode then 57 | FAddr := -FAddr; 58 | FAddrBytesLeft := 4; 59 | end; 60 | end 61 | else begin 62 | Inc(FAddr, P[I]); 63 | P[I] := Byte(FAddr); 64 | FAddr := FAddr shr 8; 65 | Dec(FAddrBytesLeft); 66 | end; 67 | Inc(I); 68 | Inc(FOffset); { yes, this can wrap around, but that's fine } 69 | end; 70 | end; 71 | 72 | end. 73 | -------------------------------------------------------------------------------- /innounp-1/sources/CmnFunc2.pas: -------------------------------------------------------------------------------- 1 | unit CmnFunc2; 2 | 3 | { 4 | Inno Setup 5 | Copyright (C) 1997-2005 Jordan Russell 6 | Portions by Martijn Laan 7 | For conditions of distribution and use, see LICENSE.TXT. 8 | 9 | Common non-VCL functions 10 | 11 | $jrsoftware: issrc/Projects/CmnFunc2.pas,v 1.68 2005/02/19 10:23:38 mlaan Exp $ 12 | } 13 | 14 | {$B-,R-} 15 | 16 | interface 17 | 18 | function NewFileExists(const Name: String): Boolean; 19 | function DirExists(const Name: String): Boolean; 20 | function FileOrDirExists(const Name: String): Boolean; 21 | function AddQuotes(const S: String): String; 22 | function RemoveQuotes(const S: String): String; 23 | function IsWildcard(const Pattern: String): Boolean; 24 | function WildcardMatch(const Text, Pattern: PChar): Boolean; 25 | function Win32ErrorString(ErrorCode: Integer): String; 26 | 27 | implementation 28 | 29 | uses 30 | Winapi.Windows, System.SysUtils, PathFunc; 31 | 32 | function InternalGetFileAttr(const Name: String): Integer; 33 | begin 34 | Result := GetFileAttributes(PChar(RemoveBackslashUnlessRoot(Name))); 35 | end; 36 | 37 | function NewFileExists(const Name: String): Boolean; 38 | { Returns True if the specified file exists. 39 | This function is better than Delphi's FileExists function because it works 40 | on files in directories that don't have "list" permission. There is, however, 41 | one other difference: FileExists allows wildcards, but this function does 42 | not. } 43 | var 44 | Attr: Integer; 45 | begin 46 | Attr := InternalGetFileAttr(Name); 47 | Result := (Attr <> -1) and (Attr and faDirectory = 0); 48 | end; 49 | 50 | function DirExists(const Name: String): Boolean; 51 | { Returns True if the specified directory name exists. The specified name 52 | may include a trailing backslash. 53 | NOTE: Delphi's FileCtrl unit has a similar function called DirectoryExists. 54 | However, the implementation is different between Delphi 1 and 2. (Delphi 1 55 | does not count hidden or system directories as existing.) } 56 | var 57 | Attr: Integer; 58 | begin 59 | Attr := InternalGetFileAttr(Name); 60 | Result := (Attr <> -1) and (Attr and faDirectory <> 0); 61 | end; 62 | 63 | function FileOrDirExists(const Name: String): Boolean; 64 | { Returns True if the specified directory or file name exists. The specified 65 | name may include a trailing backslash. } 66 | begin 67 | Result := InternalGetFileAttr(Name) <> -1; 68 | end; 69 | 70 | function AddQuotes(const S: String): String; 71 | { Adds a quote (") character to the left and right sides of the string if 72 | the string contains a space and it didn't have quotes already. This is 73 | primarily used when spawning another process with a long filename as one of 74 | the parameters. } 75 | begin 76 | Result := Trim(S); 77 | if (PathPos(' ', Result) <> 0) and 78 | ((Result[1] <> '"') or (PathLastChar(Result)^ <> '"')) then 79 | Result := '"' + Result + '"'; 80 | end; 81 | 82 | function RemoveQuotes(const S: String): String; 83 | { Opposite of AddQuotes; removes any quotes around the string. } 84 | begin 85 | Result := S; 86 | while (Result <> '') and (Result[1] = '"') do 87 | Delete(Result, 1, 1); 88 | while (Result <> '') and (PathLastChar(Result)^ = '"') do 89 | SetLength(Result, Length(Result)-1); 90 | end; 91 | 92 | function IsWildcard(const Pattern: String): Boolean; 93 | begin 94 | Result := (Pos('*', Pattern) <> 0) or (Pos('?', Pattern) <> 0); 95 | end; 96 | 97 | function WildcardMatch(const Text, Pattern: PChar): Boolean; 98 | type 99 | TWildcardMatchResult = (wmFalse, wmTrue, wmAbort); 100 | 101 | function InternalWildcardMatch(T, P: PChar): TWildcardMatchResult; 102 | begin 103 | while P^ <> #0 do begin 104 | case P^ of 105 | '?': ; { Match any character } 106 | '*': begin 107 | Inc(P); 108 | while P^ = '*' do begin 109 | { Consecutive stars act just like one } 110 | Inc(P); 111 | end; 112 | if P^ = #0 then begin 113 | { Trailing star matches everything } 114 | Result := wmTrue; 115 | Exit; 116 | end; 117 | while T^ <> #0 do begin 118 | Result := InternalWildcardMatch(T, P); 119 | if Result <> wmFalse then 120 | Exit; 121 | T := CharNext(T); 122 | end; 123 | Result := wmAbort; 124 | Exit; 125 | end; 126 | else 127 | if not PathCharCompare(T, P) then begin 128 | Result := wmFalse; 129 | Exit; 130 | end; 131 | end; 132 | T := CharNext(T); 133 | P := CharNext(P); 134 | end; 135 | if T^ = #0 then 136 | Result := wmTrue 137 | else 138 | Result := wmFalse; 139 | end; 140 | 141 | begin 142 | Result := (InternalWildcardMatch(Text, Pattern) = wmTrue); 143 | end; 144 | 145 | function Win32ErrorString(ErrorCode: Integer): String; 146 | { Like SysErrorMessage but also passes the FORMAT_MESSAGE_IGNORE_INSERTS flag 147 | which allows the function to succeed on errors like 129 } 148 | var 149 | Len: Integer; 150 | Buffer: array[0..1023] of Char; 151 | begin 152 | Len := FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM or 153 | FORMAT_MESSAGE_IGNORE_INSERTS or FORMAT_MESSAGE_ARGUMENT_ARRAY, nil, 154 | ErrorCode, 0, Buffer, SizeOf(Buffer), nil); 155 | while (Len > 0) and (Buffer[Len - 1] in [#0..#32, '.']) do 156 | Dec(Len); 157 | SetString(Result, Buffer, Len); 158 | end; 159 | 160 | end. 161 | -------------------------------------------------------------------------------- /innounp-1/sources/CompressList: -------------------------------------------------------------------------------- 1 | 4008 2 | 4107 -------------------------------------------------------------------------------- /innounp-1/sources/CompressTemplate.pas: -------------------------------------------------------------------------------- 1 | unit CompressVerDEFVER; 2 | 3 | interface 4 | uses zlibDEFVER, Compress, FileClass; 5 | 6 | type 7 | TZlibBlockReaderDEFVER = class (TAbstractBlockReader) 8 | protected 9 | Data: TDeflateBlockReadData; 10 | public 11 | constructor Create(AFile: TFile; ADecompressorClass: TCustomDecompressorClass); override; 12 | destructor Destroy; override; 13 | procedure Read(var Buffer; Count: Cardinal); override; 14 | end; 15 | 16 | implementation 17 | 18 | constructor TZlibBlockReaderDEFVER.Create(AFile: TFile; ADecompressorClass: TCustomDecompressorClass); 19 | begin 20 | InflateBlockReadBegin(AFile, Data); 21 | end; 22 | 23 | destructor TZlibBlockReaderDEFVER.Destroy; 24 | begin 25 | InflateBlockReadEnd(Data); 26 | end; 27 | 28 | procedure TZlibBlockReaderDEFVER.Read(var Buffer; Count: Cardinal); 29 | begin 30 | InflateBlockRead(Data,Buffer,Count); 31 | end; 32 | 33 | end. 34 | -------------------------------------------------------------------------------- /innounp-1/sources/CustomVersions.pas: -------------------------------------------------------------------------------- 1 | unit CustomVersions; 2 | 3 | interface 4 | 5 | { Package info structures } 6 | { Extracted from SysUtils.pas } 7 | 8 | type 9 | PPkgName = ^TPkgName; 10 | TPkgName = packed record 11 | HashCode: Byte; 12 | Name: array[0..255] of AnsiChar; 13 | end; 14 | 15 | { PackageUnitFlags: 16 | bit meaning 17 | ----------------------------------------------------------------------------------------- 18 | 0 | main unit 19 | 1 | package unit (dpk source) 20 | 2 | $WEAKPACKAGEUNIT unit 21 | 3 | original containment of $WEAKPACKAGEUNIT (package into which it was compiled) 22 | 4 | implicitly imported 23 | 5..7 | reserved 24 | } 25 | PUnitName = ^TUnitName; 26 | TUnitName = packed record 27 | Flags : Byte; 28 | HashCode: Byte; 29 | Name: array[0..255] of AnsiChar; 30 | end; 31 | 32 | { Package flags: 33 | bit meaning 34 | ----------------------------------------------------------------------------------------- 35 | 0 | 1: never-build 0: always build 36 | 1 | 1: design-time only 0: not design-time only on => bit 2 = off 37 | 2 | 1: run-time only 0: not run-time only on => bit 1 = off 38 | 3 | 1: do not check for dup units 0: perform normal dup unit check 39 | 4..25 | reserved 40 | 26..27| (producer) 0: pre-V4, 1: undefined, 2: c++, 3: Pascal 41 | 28..29| reserved 42 | 30..31| 0: EXE, 1: Package DLL, 2: Library DLL, 3: undefined 43 | } 44 | PPackageInfoHeader = ^TPackageInfoHeader; 45 | TPackageInfoHeader = packed record 46 | Flags: Cardinal; 47 | RequiresCount: Integer; 48 | {Requires: array[0..9999] of TPkgName; 49 | ContainsCount: Integer; 50 | Contains: array[0..9999] of TUnitName;} 51 | end; 52 | 53 | function CheckResToolsVersion(Filename:string) : boolean; 54 | 55 | implementation 56 | 57 | uses Winapi.Windows, System.SysUtils, System.StrUtils; 58 | 59 | function PackageInfoTable(Module: HMODULE): PPackageInfoHeader; 60 | var 61 | ResInfo: HRSRC; 62 | Data: THandle; 63 | begin 64 | Result := nil; 65 | ResInfo := FindResource(Module, 'PACKAGEINFO', RT_RCDATA); 66 | if ResInfo <> 0 then 67 | begin 68 | Data := LoadResource(Module, ResInfo); 69 | if Data <> 0 then 70 | try 71 | Result := LockResource(Data); 72 | UnlockResource(Data); 73 | finally 74 | FreeResource(Data); 75 | end; 76 | end; 77 | end; 78 | 79 | function CheckResToolsVersion(Filename:string) : boolean; 80 | var 81 | hMod: HMODULE; 82 | InfoTable: PPackageInfoHeader; 83 | i: integer; 84 | PkgName: PPkgName; 85 | UName : PUnitName; 86 | Count: Integer; 87 | begin 88 | Result := false; 89 | hMod := LoadLibraryEx(PChar(Filename), 0, LOAD_LIBRARY_AS_DATAFILE); 90 | 91 | // Loading very large files in datafile mode requires a lot of memory 92 | // And can sometimes fail if system memory is not very large. 93 | // If this is the case then let's try to load file a regular module 94 | if (hMod = 0) and (GetLastError() = ERROR_NOT_ENOUGH_MEMORY) then 95 | hMod := LoadLibraryEx(PChar(Filename), 0, 0); 96 | 97 | if hMod=0 then exit; 98 | 99 | InfoTable := PackageInfoTable(hMod); 100 | 101 | if Assigned(InfoTable) then 102 | begin 103 | PkgName := PPkgName(Integer(InfoTable) + SizeOf(InfoTable^)); 104 | { Skip the Requires list } 105 | for I := 0 to InfoTable.RequiresCount - 1 do Inc(Integer(PkgName), StrLen(PkgName.Name) + 2); 106 | Count := Integer(Pointer(PkgName)^); 107 | UName := PUnitName(Integer(PkgName) + 4); 108 | for I := 0 to Count - 1 do 109 | begin 110 | if AnsiStartsText('SetupLdr_D2009', UName.Name) then 111 | begin 112 | Result := True; 113 | break 114 | end; 115 | Inc(Integer(UName), StrLen(UName.Name) + 3); 116 | end; 117 | end; 118 | 119 | FreeLibrary(hMod); 120 | end; 121 | 122 | end. 123 | -------------------------------------------------------------------------------- /innounp-1/sources/FileNull.pas: -------------------------------------------------------------------------------- 1 | unit FileNull; 2 | 3 | interface 4 | 5 | uses Int64Em, FileClass; 6 | 7 | type 8 | TNullFile = class(TFile) 9 | protected 10 | function GetPosition: Integer64; override; 11 | function GetSize: Integer64; override; 12 | public 13 | constructor Create(); 14 | 15 | function Read(var Buffer; Count: Cardinal): Cardinal; override; 16 | procedure Seek64(Offset: Integer64); override; 17 | procedure WriteBuffer(const Buffer; Count: Cardinal); override; 18 | end; 19 | 20 | implementation 21 | 22 | uses System.SysUtils; 23 | 24 | { TNullFile } 25 | 26 | constructor TNullFile.Create; 27 | begin 28 | // 29 | end; 30 | 31 | function TNullFile.GetPosition: Integer64; 32 | begin 33 | Result.Lo := 0; 34 | Result.Hi := 0; 35 | end; 36 | 37 | function TNullFile.GetSize: Integer64; 38 | begin 39 | Result.Lo := 0; 40 | Result.Hi := 0; 41 | end; 42 | 43 | function TNullFile.Read(var Buffer; Count: Cardinal): Cardinal; 44 | begin 45 | raise Exception.Create('Can not read from Null file'); 46 | end; 47 | 48 | procedure TNullFile.Seek64(Offset: Integer64); 49 | begin 50 | // Do nothing 51 | end; 52 | 53 | procedure TNullFile.WriteBuffer(const Buffer; Count: Cardinal); 54 | begin 55 | // Do nothing 56 | end; 57 | 58 | end. 59 | -------------------------------------------------------------------------------- /innounp-1/sources/InstFunc.pas: -------------------------------------------------------------------------------- 1 | unit InstFunc; 2 | 3 | { 4 | Inno Setup 5 | Copyright (C) 1997-2004 Jordan Russell 6 | Portions by Martijn Laan 7 | For conditions of distribution and use, see LICENSE.TXT. 8 | 9 | Misc. installation functions 10 | 11 | $jrsoftware: issrc/Projects/InstFunc.pas,v 1.30 2004/02/16 02:58:30 jr Exp $ 12 | } 13 | 14 | interface 15 | 16 | function GenerateUniqueName(Path: String; const Extension: String): String; 17 | procedure Win32ErrorMsg(const FunctionName: String); 18 | 19 | implementation 20 | 21 | uses 22 | Winapi.Windows, System.SysUtils, PathFunc, CmnFunc2, Msgs, MsgIDs; 23 | 24 | procedure Win32ErrorMsg(const FunctionName: String); 25 | var 26 | LastError: DWORD; 27 | begin 28 | LastError := GetLastError; 29 | raise Exception.Create(FmtSetupMessage(msgErrorFunctionFailedWithMessage, 30 | [FunctionName, IntToStr(LastError), SysErrorMessage(LastError)])); 31 | end; 32 | 33 | function GenerateUniqueName(Path: String; const Extension: String): String; 34 | function IntToBase32(Number: Longint): String; 35 | const 36 | Table: array[0..31] of Char = '0123456789ABCDEFGHIJKLMNOPQRSTUV'; 37 | var 38 | I: Integer; 39 | begin 40 | Result := ''; 41 | for I := 0 to 4 do begin 42 | Insert(Table[Number and 31], Result, 1); 43 | Number := Number shr 5; 44 | end; 45 | end; 46 | var 47 | Rand, RandOrig: Longint; 48 | begin 49 | Path := AddBackslash(Path); 50 | RandOrig := Random($2000000); 51 | Rand := RandOrig; 52 | repeat 53 | Inc(Rand); 54 | if Rand > $1FFFFFF then Rand := 0; 55 | if Rand = RandOrig then 56 | { practically impossible to go through 33 million possibilities, 57 | but check "just in case"... } 58 | raise Exception.Create(FmtSetupMessage1(msgErrorTooManyFilesInDir, 59 | RemoveBackslashUnlessRoot(Path))); 60 | { Generate a random name } 61 | Result := Path + 'is-' + IntToBase32(Rand) + Extension; 62 | until not FileOrDirExists(Result); 63 | end; 64 | 65 | end. 66 | -------------------------------------------------------------------------------- /innounp-1/sources/Int64Em.pas: -------------------------------------------------------------------------------- 1 | unit Int64Em; 2 | 3 | { 4 | Inno Setup 5 | Copyright (C) 1997-2004 Jordan Russell 6 | Portions by Martijn Laan 7 | For conditions of distribution and use, see LICENSE.TXT. 8 | 9 | Declaration of the Integer64 type - which represents an *unsigned* 64-bit 10 | integer value - and functions for manipulating Integer64's. 11 | (We can't use the Int64 type since it's only available in Delphi 4 and 12 | later.) 13 | 14 | $jrsoftware: issrc/Projects/Int64Em.pas,v 1.9 2004/11/07 19:23:06 jr Exp $ 15 | } 16 | 17 | interface 18 | 19 | type 20 | Integer64 = packed record 21 | Lo, Hi: LongWord; 22 | end; 23 | 24 | function Compare64(const N1, N2: Integer64): Integer; 25 | procedure Inc64(var X: Integer64; N: LongWord); 26 | 27 | implementation 28 | 29 | function Compare64(const N1, N2: Integer64): Integer; 30 | { If N1 = N2, returns 0. 31 | If N1 > N2, returns 1. 32 | If N1 < N2, returns -1. } 33 | asm 34 | { Compare high words } 35 | mov ecx, [eax+4] 36 | cmp ecx, [edx+4] 37 | ja @@return1 38 | jb @@returnminus1 39 | { High words equal; compare low words } 40 | mov ecx, [eax] 41 | cmp ecx, [edx] 42 | ja @@return1 43 | jb @@returnminus1 44 | jmp @@return0 45 | @@return1: 46 | xor eax, eax 47 | inc eax 48 | jmp @@exit 49 | @@returnminus1: 50 | or eax, -1 51 | jmp @@exit 52 | @@return0: 53 | xor eax,eax 54 | @@exit: 55 | end; 56 | 57 | procedure Inc64(var X: Integer64; N: LongWord); 58 | asm 59 | add [eax], edx 60 | adc dword ptr [eax+4], 0 61 | end; 62 | 63 | end. 64 | -------------------------------------------------------------------------------- /innounp-1/sources/LZMADecompSmall.pas: -------------------------------------------------------------------------------- 1 | unit LZMADecompSmall; 2 | 3 | { 4 | Inno Setup 5 | Copyright (C) 1997-2010 Jordan Russell 6 | Portions by Martijn Laan 7 | For conditions of distribution and use, see LICENSE.TXT. 8 | 9 | Interface to the older, size-optimized LZMA SDK 4.43 decompression OBJ 10 | 11 | Source code for the "small" decompression OBJ can found in the LzmaDecode 12 | subdirectory. 13 | 14 | $jrsoftware: issrc/Projects/LZMADecompSmall.pas,v 1.1 2010/04/05 20:06:10 jr Exp $ 15 | } 16 | 17 | interface 18 | 19 | uses 20 | Winapi.Windows, System.SysUtils, Compress; 21 | 22 | type 23 | { Internally-used record } 24 | TLZMAInternalDecoderState = record 25 | { NOTE: None of these fields are ever accessed directly by this unit. 26 | They are exposed purely for debugging purposes. } 27 | opaque_Properties: record 28 | lc: Integer; 29 | lp: Integer; 30 | pb: Integer; 31 | DictionarySize: LongWord; 32 | end; 33 | opaque_Probs: Pointer; 34 | opaque_Buffer: Pointer; 35 | opaque_BufferLim: Pointer; 36 | opaque_Dictionary: Pointer; 37 | opaque_Range: LongWord; 38 | opaque_Code: LongWord; 39 | opaque_DictionaryPos: LongWord; 40 | opaque_GlobalPos: LongWord; 41 | opaque_DistanceLimit: LongWord; 42 | opaque_Reps: array[0..3] of LongWord; 43 | opaque_State: Integer; 44 | opaque_RemainLen: Integer; 45 | opaque_TempDictionary: array[0..3] of Byte; 46 | end; 47 | 48 | TLZMA1SmallDecompressor = class(TCustomDecompressor) 49 | private 50 | FReachedEnd: Boolean; 51 | FHeaderProcessed: Boolean; 52 | FDecoderState: TLZMAInternalDecoderState; 53 | FHeapBase: Pointer; 54 | FHeapSize: Cardinal; 55 | FBuffer: array[0..65535] of Byte; 56 | procedure DestroyHeap; 57 | procedure DoRead(var Buffer: Pointer; var BufferSize: Cardinal); 58 | procedure ProcessHeader; 59 | public 60 | destructor Destroy; override; 61 | procedure DecompressInto(var Buffer; Count: Longint); override; 62 | procedure Reset; override; 63 | end; 64 | 65 | implementation 66 | 67 | const 68 | SLZMADataError = 'lzmadecompsmall: Compressed data is corrupted (%d)'; 69 | 70 | procedure LZMADataError(const Id: Integer); 71 | begin 72 | raise ECompressDataError.CreateFmt(SLZMADataError, [Id]); 73 | end; 74 | 75 | procedure LZMAInternalError(const Msg: String); 76 | begin 77 | raise ECompressInternalError.CreateFmt('lzmadecompsmall: %s', [Msg]); 78 | end; 79 | 80 | procedure LZMAInternalErrorFmt(const Msg: String; const Args: array of const); 81 | begin 82 | LZMAInternalError(Format(Msg, Args)); 83 | end; 84 | 85 | { TLZMA1SmallDecompressor } 86 | 87 | {$L LzmaDecode\LzmaDecodeInno.obj} 88 | 89 | type 90 | TLzmaInCallback = record 91 | Read: function(obj: Pointer; var buffer: Pointer; var bufferSize: Cardinal): Integer; 92 | end; 93 | 94 | const 95 | LZMA_RESULT_OK = 0; 96 | LZMA_RESULT_DATA_ERROR = 1; 97 | 98 | LZMA_PROPERTIES_SIZE = 5; 99 | 100 | function LzmaMyDecodeProperties(var vs: TLZMAInternalDecoderState; 101 | vsSize: Integer; const propsData; propsDataSize: Integer; 102 | var outPropsSize: LongWord; var outDictionarySize: LongWord): Integer; external; 103 | procedure LzmaMyDecoderInit(var vs: TLZMAInternalDecoderState; 104 | probsPtr: Pointer; dictionaryPtr: Pointer); external; 105 | function LzmaDecode(var vs: TLZMAInternalDecoderState; 106 | var inCallback: TLzmaInCallback; var outStream; outSize: Cardinal; 107 | var outSizeProcessed: Cardinal): Integer; external; 108 | 109 | type 110 | TLZMADecompressorCallbackData = record 111 | Callback: TLzmaInCallback; 112 | Instance: TLZMA1SmallDecompressor; 113 | end; 114 | 115 | function ReadFunc(obj: Pointer; var buffer: Pointer; var bufferSize: Cardinal): Integer; 116 | begin 117 | TLZMADecompressorCallbackData(obj^).Instance.DoRead(buffer, bufferSize); 118 | { Don't bother returning any sort of failure code, because if DoRead failed, 119 | it would've raised an exception } 120 | Result := LZMA_RESULT_OK; 121 | end; 122 | 123 | destructor TLZMA1SmallDecompressor.Destroy; 124 | begin 125 | DestroyHeap; 126 | inherited; 127 | end; 128 | 129 | procedure TLZMA1SmallDecompressor.DestroyHeap; 130 | begin 131 | FHeapSize := 0; 132 | if Assigned(FHeapBase) then begin 133 | VirtualFree(FHeapBase, 0, MEM_RELEASE); 134 | FHeapBase := nil; 135 | end; 136 | end; 137 | 138 | procedure TLZMA1SmallDecompressor.DoRead(var Buffer: Pointer; var BufferSize: Cardinal); 139 | begin 140 | Buffer := @FBuffer; 141 | BufferSize := 0; 142 | if not FReachedEnd then begin 143 | BufferSize := ReadProc(FBuffer, SizeOf(FBuffer)); 144 | if BufferSize = 0 then 145 | FReachedEnd := True; { not really necessary, but for consistency } 146 | end; 147 | end; 148 | 149 | procedure TLZMA1SmallDecompressor.ProcessHeader; 150 | var 151 | Props: array[0..LZMA_PROPERTIES_SIZE-1] of Byte; 152 | ProbsSize, DictionarySize: LongWord; 153 | NewHeapSize: Cardinal; 154 | begin 155 | { Read header fields } 156 | if ReadProc(Props, SizeOf(Props)) <> SizeOf(Props) then 157 | LZMADataError(1); 158 | 159 | { Initialize the LZMA decoder state structure, and calculate the size of 160 | the Probs and Dictionary } 161 | FillChar(FDecoderState, SizeOf(FDecoderState), 0); 162 | if LzmaMyDecodeProperties(FDecoderState, SizeOf(FDecoderState), Props, 163 | SizeOf(Props), ProbsSize, DictionarySize) <> LZMA_RESULT_OK then 164 | LZMADataError(3); 165 | if DictionarySize > LongWord(64 shl 20) then 166 | { sanity check: we only use dictionary sizes <= 64 MB } 167 | LZMADataError(7); 168 | 169 | { Allocate memory for the Probs and Dictionary, and pass the pointers over } 170 | NewHeapSize := ProbsSize + DictionarySize; 171 | if FHeapSize <> NewHeapSize then begin 172 | DestroyHeap; 173 | FHeapBase := VirtualAlloc(nil, NewHeapSize, MEM_COMMIT, PAGE_READWRITE); 174 | if FHeapBase = nil then 175 | OutOfMemoryError; 176 | FHeapSize := NewHeapSize; 177 | end; 178 | LzmaMyDecoderInit(FDecoderState, FHeapBase, Pointer(Cardinal(FHeapBase) + ProbsSize)); 179 | 180 | FHeaderProcessed := True; 181 | end; 182 | 183 | procedure TLZMA1SmallDecompressor.DecompressInto(var Buffer; Count: Longint); 184 | var 185 | CallbackData: TLZMADecompressorCallbackData; 186 | Code: Integer; 187 | OutProcessed: Cardinal; 188 | begin 189 | if not FHeaderProcessed then 190 | ProcessHeader; 191 | CallbackData.Callback.Read := ReadFunc; 192 | CallbackData.Instance := Self; 193 | try 194 | Code := LzmaDecode(FDecoderState, CallbackData.Callback, Buffer, Count, 195 | OutProcessed); 196 | except 197 | on Exception do Code:=LZMA_RESULT_DATA_ERROR; 198 | end; 199 | case Code of 200 | LZMA_RESULT_OK: ; 201 | LZMA_RESULT_DATA_ERROR: LZMADataError(5); 202 | else 203 | LZMAInternalErrorFmt('LzmaDecode failed (%d)', [Code]); 204 | end; 205 | if OutProcessed <> Cardinal(Count) then 206 | LZMADataError(6); 207 | end; 208 | 209 | procedure TLZMA1SmallDecompressor.Reset; 210 | begin 211 | FHeaderProcessed := False; 212 | FReachedEnd := False; 213 | end; 214 | 215 | end. 216 | -------------------------------------------------------------------------------- /innounp-1/sources/LzmaDecode/LzmaDecodeInno.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-1/sources/LzmaDecode/LzmaDecodeInno.obj -------------------------------------------------------------------------------- /innounp-1/sources/Msgs.pas: -------------------------------------------------------------------------------- 1 | unit Msgs; 2 | 3 | { 4 | Inno Setup 5 | Copyright (C) 1997-2004 Jordan Russell 6 | Portions by Martijn Laan 7 | For conditions of distribution and use, see LICENSE.TXT. 8 | 9 | Message file handling functions 10 | 11 | $jrsoftware: issrc/Projects/Msgs.pas,v 1.10 2004/02/28 20:48:18 jr Exp $ 12 | } 13 | 14 | interface 15 | 16 | uses 17 | MsgIDs, Struct; 18 | 19 | const 20 | SNewLine = #13#10; { line break } 21 | SNewLine2 = #13#10#13#10; { double line break } 22 | 23 | var 24 | SetupMessages: array[TSetupMessageID] of String; 25 | 26 | function FmtMessage(S: PChar; const Args: array of String): String; 27 | function FmtSetupMessage(const ID: TSetupMessageID; const Args: array of String): String; 28 | function FmtSetupMessage1(const ID: TSetupMessageID; const Arg1: String): String; 29 | 30 | const 31 | { You don't have to translate these. The only time they are used is when an 32 | error occurs before or while the messages file is loaded. Otherwise, it 33 | uses the corresponding messages in the messages file. } 34 | SSetupFileMissing = 'The file %1 is missing from the installation directory. ' + 35 | 'Please correct the problem or obtain a new copy of the program.'; 36 | SSetupFileCorrupt = 'Failed to recognize the file(s) as a valid Inno Setup installer. ' + 37 | 'The setup files may be corrupted or made by an incompatible version.'; 38 | SSetupFileCorruptOrWrongVer = 'The setup files are corrupted, or are ' + 39 | 'incompatible with this version of Setup. Please correct the problem or ' + 40 | 'obtain a new copy of the program.'; 41 | SMsgsFileMissing = 'Messages file "%s" is missing. Please correct ' + 42 | 'the problem or obtain a new copy of the program.'; 43 | 44 | implementation 45 | 46 | uses 47 | Winapi.Windows, System.SysUtils, Compress, CmnFunc2, FileClass; 48 | 49 | const 50 | SMsgsFileTooLarge = 'Internal error: Messages file is too large'; 51 | 52 | function FmtMessage(S: PChar; const Args: array of String): String; 53 | var 54 | P: PChar; 55 | Z: String; 56 | begin 57 | Result := ''; 58 | if S = nil then Exit; 59 | while True do begin 60 | P := StrScan(S, '%'); 61 | if P = nil then begin 62 | Result := Result + S; 63 | Break; 64 | end; 65 | if P <> S then begin 66 | SetString(Z, S, P - S); 67 | Result := Result + Z; 68 | S := P; 69 | end; 70 | Inc(P); 71 | if (P^ >= '1') and (Ord(P^) <= Ord('1') + High(Args)) then begin 72 | Result := Result + Args[Ord(P^) - Ord('1')]; 73 | Inc(S, 2); 74 | end 75 | else begin 76 | Result := Result + '%'; 77 | Inc(S); 78 | if P^ = '%' then 79 | Inc(S); 80 | end; 81 | end; 82 | end; 83 | 84 | function FmtSetupMessage(const ID: TSetupMessageID; const Args: array of String): String; 85 | begin 86 | Result := FmtMessage(PChar(SetupMessages[ID]), Args); 87 | end; 88 | 89 | function FmtSetupMessage1(const ID: TSetupMessageID; const Arg1: String): String; 90 | begin 91 | Result := FmtSetupMessage(ID, [Arg1]); 92 | end; 93 | 94 | procedure FreeSetupMessages; 95 | var 96 | I: TSetupMessageID; 97 | begin 98 | for I := Low(SetupMessages) to High(SetupMessages) do 99 | SetupMessages[I] := ''; 100 | end; 101 | 102 | 103 | initialization 104 | SetupMessages[msgErrorReadingSource]:='An error occurred while trying to read the source file:'; 105 | SetupMessages[msgErrorCopying]:='An error occurred while trying to copy a file:'; 106 | SetupMessages[msgErrorCreatingDir]:='Setup was unable to create the directory "%1"'; 107 | SetupMessages[msgLastErrorMessage]:='%1.%n%nError %2: %3'; 108 | SetupMessages[msgSetupFileCorrupt]:='The setup files are corrupted. Please obtain a new copy of the program.'; 109 | SetupMessages[msgSetupFileCorruptOrWrongVer]:='The setup files are corrupted, or are incompatible with this version of Setup. Please correct the problem or obtain a new copy of the program.'; 110 | SetupMessages[msgErrorRegisterServerMissingExport]:='DllRegisterServer export not found'; 111 | SetupMessages[msgErrorTitle]:='Error'; 112 | SetupMessages[msgErrorRestartingComputer]:='Setup was unable to restart the computer. Please do this manually.'; 113 | SetupMessages[msgErrorRegOpenKey]:='Error opening registry key:%n%1\%2'; 114 | SetupMessages[msgErrorTooManyFilesInDir]:='Unable to create a file in the directory "%1" because it contains too many files'; 115 | SetupMessages[msgErrorFunctionFailed]:='%1 failed; code %2'; 116 | SetupMessages[msgErrorFunctionFailedWithMessage]:='%1 failed; code %2.%n%3'; 117 | SetupMessages[msgSourceIsCorrupted]:='The source file is corrupted'; 118 | SetupMessages[msgIncorrectPassword]:='Incorrect password specified'; 119 | 120 | finalization 121 | FreeSetupMessages; 122 | end. 123 | -------------------------------------------------------------------------------- /innounp-1/sources/REPLACE.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-1/sources/REPLACE.EXE -------------------------------------------------------------------------------- /innounp-1/sources/SetupEnt.pas: -------------------------------------------------------------------------------- 1 | unit SetupEnt; 2 | 3 | { 4 | Inno Setup 5 | Copyright (C) 1997-2004 Jordan Russell 6 | Portions by Martijn Laan 7 | For conditions of distribution and use, see LICENSE.TXT. 8 | 9 | Functions for handling records with embedded long strings 10 | 11 | $jrsoftware: issrc/Projects/SetupEnt.pas,v 1.6 2009/05/27 10:03:49 mlaan Exp $ 12 | } 13 | 14 | interface 15 | 16 | uses 17 | Compress; 18 | 19 | procedure SECompressedBlockRead(const R: TAbstractBlockReader; var Buf; 20 | const Count: Cardinal; const NumWideStrings, NumAnsiStrings: Integer); 21 | procedure SECompressedBlockSkip(const R: TAbstractBlockReader; 22 | const Count: Cardinal; const NumWideStrings, NumAnsiStrings: Integer); 23 | 24 | implementation 25 | 26 | uses Main; 27 | 28 | procedure SECompressedBlockRead(const R: TAbstractBlockReader; var Buf; 29 | const Count: Cardinal; const NumWideStrings, NumAnsiStrings: Integer); 30 | var 31 | P: Pointer; 32 | I: Integer; 33 | Len: Integer; 34 | S: WideString; 35 | AnsiS: AnsiString; 36 | begin 37 | P := @Buf; 38 | for I := 1 to NumWideStrings do begin 39 | R.Read(Len, SizeOf(Len)); 40 | SetLength(S, Len div SizeOf(WideChar)); 41 | if Len > 0 then R.Read(S[1], Len); 42 | if Ver>=6000 then String(P^) := S 43 | else WideString(P^) := S; 44 | Inc(Cardinal(P), SizeOf(Pointer)); 45 | end; 46 | for I := 1 to NumAnsiStrings do begin 47 | R.Read(Len, SizeOf(Len)); 48 | SetLength(AnsiS, Len); 49 | if Len > 0 then R.Read(AnsiS[1], Len); 50 | AnsiString(P^) := AnsiS; 51 | Inc(Cardinal(P), SizeOf(Pointer)); 52 | end; 53 | R.Read(P^,Count - (Cardinal(NumWideStrings + NumAnsiStrings) * SizeOf(Pointer))); 54 | end; 55 | 56 | procedure SECompressedBlockSkip(const R: TAbstractBlockReader; 57 | const Count: Cardinal; const NumWideStrings, NumAnsiStrings: Integer); 58 | var 59 | // P: Pointer; 60 | I: Integer; 61 | Len: Integer; 62 | S: WideString; 63 | AnsiS: AnsiString; 64 | begin 65 | // P := @Buf; 66 | for I := 1 to NumWideStrings do begin 67 | R.Read(Len, SizeOf(Len)); 68 | SetLength(S, Len div SizeOf(WideChar)); 69 | if Len > 0 then 70 | R.Read(S[1], Len); 71 | // String(P^) := S; 72 | // Inc(Cardinal(P), SizeOf(Pointer)); 73 | end; 74 | for I := 1 to NumAnsiStrings do begin 75 | R.Read(Len, SizeOf(Len)); 76 | SetLength(AnsiS, Len); 77 | if Len > 0 then 78 | R.Read(AnsiS[1], Len); 79 | // AnsiString(P^) := AnsiS; 80 | // Inc(Cardinal(P), SizeOf(Pointer)); 81 | end; 82 | R.Skip(Count - (Cardinal(NumWideStrings + NumAnsiStrings) * SizeOf(Pointer))); 83 | end; 84 | 85 | end. 86 | -------------------------------------------------------------------------------- /innounp-1/sources/Struct.pas: -------------------------------------------------------------------------------- 1 | unit Struct; 2 | 3 | //////// only version-independent types and constants 4 | //////// a separate file is used to keep version-specific definitions off the project namespace 5 | 6 | interface 7 | 8 | uses Winapi.Windows, MyTypes; 9 | 10 | type 11 | TSetupLdrOffsetTable = TMySetupLdrOffsetTable; 12 | PSetupLdrOffsetTable = ^TSetupLdrOffsetTable; 13 | TSetupHeader = TMySetupHeader; 14 | PSetupHeader = ^TSetupHeader; 15 | TSetupFileEntry = TMySetupFileEntry; 16 | PSetupFileEntry = ^TSetupFileEntry; 17 | TSetupFileLocationEntry = TMySetupFileLocationEntry; 18 | PSetupFileLocationEntry = ^TSetupFileLocationEntry; 19 | TSetupRegistryEntry = TMySetupRegistryEntry; 20 | PSetupRegistryEntry = ^TSetupRegistryEntry; 21 | TSetupRunEntry = TMySetupRunEntry; 22 | PSetupRunEntry = ^TSetupRunEntry; 23 | TSetupIconEntry = TMySetupIconEntry; 24 | PSetupIconEntry = ^TSetupIconEntry; 25 | TSetupTaskEntry = TMySetupTaskEntry; 26 | PSetupTaskEntry = ^TSetupTaskEntry; 27 | TSetupComponentEntry = TMySetupComponentEntry; 28 | PSetupComponentEntry = ^TSetupComponentEntry; 29 | TSetupTypeEntry = TMySetupTypeEntry; 30 | PSetupTypeEntry = ^TMySetupTypeEntry; 31 | TSetupCustomMessageEntry = TMySetupCustomMessageEntry; 32 | PSetupCustomMessageEntry = ^TSetupCustomMessageEntry; 33 | TSetupLanguageEntry = TMySetupLanguageEntry; 34 | PSetupLanguageEntry = ^TMySetupLanguageEntry; 35 | TSetupDirEntry = TMySetupDirEntry; 36 | PSetupDirEntry = ^TMySetupDirEntry; 37 | TSetupIniEntry = TMySetupIniEntry; 38 | PSetupIniEntry = ^TMySetupIniEntry; 39 | TSetupDeleteEntry = TMySetupDeleteEntry; 40 | PSetupDeleteEntry = ^TMySetupDeleteEntry; 41 | 42 | TSetupFileOption = TMySetupFileOption; 43 | TSetupFileLocationSign = TMySetupFileLocationSign; 44 | TSetupRegistryOption = TMySetupRegistryOption; 45 | TSetupDirOption = TMySetupDirOption; 46 | TSetupIniOption = TMySetupIniOption; 47 | TSetupRunOption = TMySetupRunOption; 48 | TSetupFileLocationFlag = TMySetupFileLocationFlag; 49 | 50 | TSetupProcessorArchitecture = TMySetupProcessorArchitecture; 51 | TSetupProcessorArchitectures = TMySetupProcessorArchitectures; 52 | TSetupDeleteType = TMySetupDeleteType; 53 | 54 | 55 | TSetupID = array[0..63] of AnsiChar; 56 | TCompID = array[1..4] of AnsiChar; 57 | TDiskSliceID = array[1..8] of AnsiChar; 58 | const 59 | { SetupID is used by the Setup program to check if the SETUP.0 file is 60 | compatible with with it. If you make any modifications to the records in 61 | this file it's recommended you change SetupID. Any change will do (like 62 | changing the letters or numbers), as long as your format is 63 | unrecognizable by the standard Inno Setup. } 64 | // SetupID: TSetupID = 'Inno Setup Setup Data (4.1.5)'; 65 | ZLIBID: TCompID = 'zlb'#26; 66 | DiskSliceID: TDiskSliceID = 'idska32'#26; 67 | type 68 | TSetupVersionDataVersion = packed record 69 | Build: Word; 70 | Minor, Major: Byte; 71 | end; 72 | 73 | TSetupVersionData = packed record 74 | WinVersion, NTVersion: Cardinal; 75 | NTServicePack: Word; 76 | end; 77 | 78 | { A TDiskSliceHeader record follows DiskSliceID in a SETUP-*.BIN file } 79 | TDiskSliceHeader = packed record 80 | TotalSize: Cardinal; 81 | end; 82 | 83 | { A TMessageHeader record follows MessagesHdrID in a SETUP.MSG file } 84 | TMessagesHeader = packed record 85 | NumMessages: Cardinal; 86 | TotalSize: Cardinal; 87 | NotTotalSize: Cardinal; 88 | CRCMessages: Longint; 89 | end; 90 | 91 | { TGrantPermissionEntry is stored inside string fields named 'Permissions' } 92 | TGrantPermissionSid = record 93 | Authority: TSIDIdentifierAuthority; 94 | SubAuthCount: Byte; 95 | SubAuth: array[0..1] of DWORD; 96 | end; 97 | TGrantPermissionEntry = record 98 | Sid: TGrantPermissionSid; 99 | AccessMask: DWORD; 100 | end; 101 | 102 | TSetupLdrExeHeader = packed record 103 | ID: Longint; 104 | OffsetTableOffset, NotOffsetTableOffset: Longint; 105 | end; 106 | 107 | TSetupLdrOffsetTable4010 = packed record // valid since v4.0.10 108 | ID: array[1..12] of AnsiChar; 109 | TotalSize, 110 | OffsetEXE, CompressedSizeEXE, UncompressedSizeEXE, CRCEXE, 111 | Offset0, Offset1: Longint; 112 | TableCRC: Longint; { CRC of all prior fields in this record } 113 | end; 114 | 115 | const 116 | SetupLdrExeHeaderOffset = $30; 117 | SetupLdrExeHeaderID = $6F6E6E49; 118 | SetupLdrOffsetTableResID = 11111; 119 | 120 | implementation 121 | 122 | end. 123 | -------------------------------------------------------------------------------- /innounp-1/sources/StructJoin.pas: -------------------------------------------------------------------------------- 1 | unit StructJoin; 2 | interface 3 | uses 4 | {$I StructList.inc} 5 | ; 6 | 7 | implementation 8 | end. -------------------------------------------------------------------------------- /innounp-1/sources/StructList: -------------------------------------------------------------------------------- 1 | 1321 2 | 1325 3 | 2007 4 | 2008 5 | 2011 6 | 2017 7 | 2018 8 | 3000 9 | 3001 10 | 3002 11 | 3003 12 | 3004 13 | 3005 14 | 3006 15 | 3007 16 | 3008 17 | 4000 18 | 4001 19 | 4002 20 | 4003 21 | 4004 22 | 4005 23 | 4006 24 | 4007 25 | 4008 26 | 4009 27 | 4010 28 | 4011 29 | 4100 30 | 4101 31 | 4102 32 | 4103 33 | 4104 34 | 4105 35 | 4106 36 | 4107 37 | 4108 38 | 4200 39 | 4201 40 | 4202 41 | 4203 42 | 4204 43 | 4205 44 | 4206 45 | 4207 46 | 5000 47 | 5001 48 | 5002 49 | 5003 50 | 5004 51 | 5100 52 | 5102 53 | 5105 54 | 5107 55 | 5110 56 | 5113 57 | 5200 58 | 5201 59 | 5203 60 | 5205 61 | 5205 u 62 | 5300 63 | 5300 u 64 | 5303 65 | 5303 u 66 | 5305 67 | 5305 u 68 | 5306 69 | 5306 u 70 | 5307 71 | 5307 u 72 | 5308 73 | 5308 u 74 | 5309 75 | 5309 u 76 | 5310 77 | 5310 u 78 | 5402 79 | 5402 u 80 | 5402 ur 81 | 5403 82 | 5500 83 | 5500 r 84 | 5500 u 85 | 5500 ur 86 | 5506 87 | 5506 u 88 | 5507 89 | 5507 u 90 | 5602 91 | 5602 u 92 | 6000 u 93 | 6100 u 94 | 6210 u 95 | 6300 u 96 | 97 | -------------------------------------------------------------------------------- /innounp-1/sources/Version.inc: -------------------------------------------------------------------------------- 1 | { 2 | Inno Setup 3 | Copyright (C) 1997-2019 Jordan Russell 4 | Portions by Martijn Laan 5 | For conditions of distribution and use, see LICENSE.TXT. 6 | } 7 | 8 | { Determine Delphi/C++Builder version } 9 | {$IFNDEF VER90} { if it's not Delphi 2.0 } 10 | {$IFNDEF VER93} { and it's not C++Builder 1.0 } 11 | {$DEFINE IS_D3} { then it must be at least Delphi 3 or C++Builder 3 } 12 | {$DEFINE Delphi3orHigher} 13 | {$IFNDEF VER100} { if it's not Delphi 3.0 } 14 | {$IFNDEF VER110} { and it's not C++Builder 3.0 } 15 | {$DEFINE IS_D4} { then it must be at least Delphi 4 or C++Builder 4 } 16 | {$IFNDEF VER120} {$IFNDEF VER125} { if it's not Delphi 4 or C++Builder 4 } 17 | {$DEFINE IS_D5} { then it must be at least Delphi 5 or C++Builder 5 } 18 | {$IFNDEF VER130} { if it's not Delphi 5 or C++Builder 5 } 19 | {$DEFINE IS_D6} { then it must be at least Delphi 6 or C++Builder 6 } 20 | {$IFNDEF VER140} { if it's not Delphi 6 or C++Builder 6 } 21 | {$DEFINE IS_D7} { then it must be at least Delphi 7 } 22 | {$IFNDEF VER150} { if it's not Delphi 7 } 23 | {$DEFINE IS_D8} { then it must be at least Delphi 8 } 24 | {$IFNDEF VER160} { if it's not Delphi 8 } 25 | {$DEFINE IS_D9} { then it must be at least Delphi 9 (2005) } 26 | {$IFNDEF VER170} { if it's not Delphi 9 (2005) } 27 | {$DEFINE IS_D10} { then it must be at least Delphi 10 (2006) } 28 | { Delphi 11 (2007) is an odd case: it defines VER180 and VER185 on Win32, and VER190 on .NET } 29 | {$IFDEF VER185} { if it's Win32 Delphi 11 (2007) exactly } 30 | {$DEFINE IS_D11} { then it must be at least Delphi 11 (2007) } 31 | {$ENDIF} 32 | {$IFNDEF VER180} { if it's neither Delphi 10 (2006) nor Win32 Delphi 11 (2007) } 33 | {$DEFINE IS_D11} { then it must be at least Delphi 11 (2007) } 34 | {$IFNDEF VER190} { if it's not .NET Delphi 11 (2007) } 35 | {$DEFINE IS_D12} { then it must be at least Delphi 12 (2009) } 36 | {$IFNDEF VER200} { if it's not Delphi 12 (2009) } 37 | {$DEFINE IS_D14} { then it must be at least Delphi 14 (2010) } 38 | {$IFNDEF VER210} { if it's not Delphi 14 (2010) } 39 | {$DEFINE IS_DXE} { then it must be at least Delphi XE } 40 | {$IFNDEF VER220} { if it's not Delphi XE } 41 | {$DEFINE IS_DXE2} { then it must be at least Delphi XE2 } 42 | {$IFNDEF VER230} { if it's not Delphi XE2 } 43 | {$DEFINE IS_DXE3} { then it must be at least Delphi XE3 } 44 | {$IFNDEF VER240} { if it's not Delphi XE3 } 45 | {$DEFINE IS_DXE4} { then it must be at least Delphi XE4 } 46 | {$IFNDEF VER250} { if it's not Delphi XE4 } 47 | {$DEFINE IS_DXE5} { then it must be at least Delphi XE5 } 48 | {$IFNDEF VER260} { if it's not Delphi XE5 } 49 | {$DEFINE IS_DXE6} { then it must be at least Delphi XE6 } 50 | {$IFNDEF VER270} { if it's not Delphi XE6 } 51 | {$DEFINE IS_DXE7} { then it must be at least Delphi XE7 } 52 | {$IFNDEF VER280} { if it's not Delphi XE7 } 53 | {$DEFINE IS_DXE8} { then it must be at least Delphi XE8 } 54 | {$IFNDEF VER290} { if it's not Delphi XE8 } 55 | {$DEFINE IS_D10SEATTLE} { then it must be at least Delphi 10 Seattle } 56 | {$IFNDEF VER300} { if it's not Delphi 10 Seattle } 57 | {$DEFINE IS_D101BERLIN} { then it must be at least Delphi 10.1 Berlin } 58 | {$IFNDEF VER310} { if it's not Delphi 10.1 Berlin } 59 | {$DEFINE IS_D102TOKYO} { then it must be at least Delphi 10.2 Tokyo } 60 | {$IFNDEF VER320} { if it's not Delphi 10.2 Tokyo } 61 | {$DEFINE IS_D103RIO} { then it must be at least Delphi 10.3 Rio } 62 | {$ENDIF} 63 | {$ENDIF} 64 | {$ENDIF} 65 | {$ENDIF} 66 | {$ENDIF} 67 | {$ENDIF} 68 | {$ENDIF} 69 | {$ENDIF} 70 | {$ENDIF} 71 | {$ENDIF} 72 | {$ENDIF} 73 | {$ENDIF} 74 | {$ENDIF} 75 | {$ENDIF} 76 | {$ENDIF} 77 | {$ENDIF} 78 | {$ENDIF} 79 | {$ENDIF} 80 | {$ENDIF} 81 | {$ENDIF} 82 | {$ENDIF} {$ENDIF} 83 | {$ENDIF} 84 | {$ENDIF} 85 | {$ENDIF} 86 | {$ENDIF} 87 | 88 | {$IFNDEF IS_ALLOWD7} 89 | { Check for Delphi 7 and its WideString bug } 90 | {$IFDEF IS_D6} 91 | {$IF Trunc(RTLVersion) = 15} 92 | { Delphi 7's WideString type is fundamentally flawed and should not be 93 | used; see QC #8565. If possible, you should compile with another version 94 | of Delphi (< 7 or 9). 95 | The bug is that it handles ANSI->Wide and Wide->ANSI conversions 96 | incorrectly; it uses the thread code page (CP_THREAD_ACP) instead of the 97 | system code page (CP_ACP). This is wrong because all of the "A" Windows 98 | APIs expect strings to use the system code page. 99 | In Inno Setup, this can result in shortcuts being created with incorrect 100 | names, since it converts ANSI->Wide when calling IPersistFile::Save. 101 | If you *really* want to compile under Delphi 7, you can remove this 102 | check. But expect breakage. } 103 | {$MESSAGE ERROR 'Delphi 7''s WideString type is broken. See comments in source code.'} 104 | {$IFEND} 105 | {$ENDIF} 106 | {$ENDIF} 107 | 108 | { Check for Delphi 2007 and its "Halt in except block" bug } 109 | {$IFDEF VER185} 110 | { On Delphi 2007, if Halt is called inside an 'except' or 'finally' block, the 111 | current exception's message is forcibly displayed on the screen (even if 112 | it's an EAbort exception), and the process returns with an exit code of 1 113 | instead of the exit code specified in the Halt call. See QC #51427. 114 | There are many places in Inno Setup that are affected by this issue (see 115 | the Halt calls in Setup.dpr for example). } 116 | {$MESSAGE ERROR 'Delphi 2007''s Halt is broken. See comments in source code.'} 117 | {$ENDIF} 118 | -------------------------------------------------------------------------------- /innounp-1/sources/VersionInfo.inc: -------------------------------------------------------------------------------- 1 | IUV_MAJOR=1; 2 | IUV_MINOR=77; 3 | IUV_RELEASE=0; 4 | 5 | -------------------------------------------------------------------------------- /innounp-1/sources/a.bat: -------------------------------------------------------------------------------- 1 | echo.|time 2 | INNOUNP.exe -v -m setup.exe 3 | echo.|time 4 | -------------------------------------------------------------------------------- /innounp-1/sources/bin.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | if -%1==- goto usage 3 | rem goto skipopt 4 | 5 | set DCC_BIN=dcc32 6 | 7 | rem Optimization: reduce exe size 8 | del *.dcu 9 | ren innounp.cfg innounp.cfg.ren 10 | call %DCC_BIN% innounp.dpr 11 | ren innounp.cfg.ren innounp.cfg 12 | if not exist StripReloc.exe call %DCC_BIN% StripReloc.dpr 13 | StripReloc /b innounp.exe 14 | rem End of optimization 15 | goto pack 16 | 17 | :skipopt 18 | call %DCC_BIN% innounp.dpr 19 | 20 | :pack 21 | if not exist release md release 22 | if exist release\%1.rar del release\%1.rar 23 | rar a -m5 release\%1.rar innounp.exe innounp.htm 24 | goto end 25 | 26 | :usage 27 | echo Makes a binary release (output is in release\release-name.rar) 28 | echo Assumes 'dcc somefile.dpr' can be used to compile sources 29 | echo Usage: bin release-name 30 | 31 | set DCC_BIN= 32 | :end 33 | -------------------------------------------------------------------------------- /innounp-1/sources/bzip/bzlib.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-1/sources/bzip/bzlib.obj -------------------------------------------------------------------------------- /innounp-1/sources/bzip/crctable.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-1/sources/bzip/crctable.obj -------------------------------------------------------------------------------- /innounp-1/sources/bzip/decompress.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-1/sources/bzip/decompress.obj -------------------------------------------------------------------------------- /innounp-1/sources/bzip/huffman.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-1/sources/bzip/huffman.obj -------------------------------------------------------------------------------- /innounp-1/sources/bzip/randtable.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-1/sources/bzip/randtable.obj -------------------------------------------------------------------------------- /innounp-1/sources/clean.bat: -------------------------------------------------------------------------------- 1 | del *.tmp 2 | del *.~* 3 | del *.dcu 4 | del StructVer??????.pas 5 | del CompressVer????.pas 6 | del StructList.inc 7 | del CompressList.inc 8 | del version.res 9 | @rem del StripReloc.exe 10 | @rem del innounp.exe 11 | -------------------------------------------------------------------------------- /innounp-1/sources/crypt/ISCrypt.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-1/sources/crypt/ISCrypt.obj -------------------------------------------------------------------------------- /innounp-1/sources/empty.pas: -------------------------------------------------------------------------------- 1 | unit empty; 2 | interface 3 | implementation 4 | end. -------------------------------------------------------------------------------- /innounp-1/sources/innounp.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /innounp-1/sources/innounp.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-1/sources/innounp.res -------------------------------------------------------------------------------- /innounp-1/sources/licenses/InnoSetup.txt: -------------------------------------------------------------------------------- 1 | Inno Setup License 2 | ================== 3 | 4 | Except where otherwise noted, all of the documentation and software included 5 | in the Inno Setup package is copyrighted by Jordan Russell. 6 | 7 | Copyright (C) 1997-2010 Jordan Russell. All rights reserved. 8 | Portions Copyright (C) 2000-2010 Martijn Laan. All rights reserved. 9 | 10 | This software is provided "as-is," without any express or implied warranty. 11 | In no event shall the author be held liable for any damages arising from the 12 | use of this software. 13 | 14 | Permission is granted to anyone to use this software for any purpose, 15 | including commercial applications, and to alter and redistribute it, 16 | provided that the following conditions are met: 17 | 18 | 1. All redistributions of source code files must retain all copyright 19 | notices that are currently in place, and this list of conditions without 20 | modification. 21 | 22 | 2. All redistributions in binary form must retain all occurrences of the 23 | above copyright notice and web site addresses that are currently in 24 | place (for example, in the About boxes). 25 | 26 | 3. The origin of this software must not be misrepresented; you must not 27 | claim that you wrote the original software. If you use this software to 28 | distribute a product, an acknowledgment in the product documentation 29 | would be appreciated but is not required. 30 | 31 | 4. Modified versions in source or binary form must be plainly marked as 32 | such, and must not be misrepresented as being the original software. 33 | 34 | 35 | Jordan Russell 36 | jr-2008 AT jrsoftware.org 37 | http://www.jrsoftware.org/ 38 | -------------------------------------------------------------------------------- /innounp-1/sources/licenses/bzip2.txt: -------------------------------------------------------------------------------- 1 | 2 | This program, "bzip2", the associated library "libbzip2", and all 3 | documentation, are copyright (C) 1996-2005 Julian R Seward. All 4 | rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions 8 | are met: 9 | 10 | 1. Redistributions of source code must retain the above copyright 11 | notice, this list of conditions and the following disclaimer. 12 | 13 | 2. The origin of this software must not be misrepresented; you must 14 | not claim that you wrote the original software. If you use this 15 | software in a product, an acknowledgment in the product 16 | documentation would be appreciated but is not required. 17 | 18 | 3. Altered source versions must be plainly marked as such, and must 19 | not be misrepresented as being the original software. 20 | 21 | 4. The name of the author may not be used to endorse or promote 22 | products derived from this software without specific prior written 23 | permission. 24 | 25 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS 26 | OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 27 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 28 | ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 29 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 30 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 31 | GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 32 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 33 | WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 34 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 35 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36 | 37 | Julian Seward, Cambridge, UK. 38 | jseward@acm.org 39 | bzip2/libbzip2 version 1.0.3 of 15 February 2005 40 | 41 | -------------------------------------------------------------------------------- /innounp-1/sources/licenses/zlib.txt: -------------------------------------------------------------------------------- 1 | ZLIB DATA COMPRESSION LIBRARY 2 | 3 | (C) 1995-2004 Jean-loup Gailly and Mark Adler 4 | 5 | This software is provided 'as-is', without any express or implied 6 | warranty. In no event will the authors be held liable for any damages 7 | arising from the use of this software. 8 | 9 | Permission is granted to anyone to use this software for any purpose, 10 | including commercial applications, and to alter it and redistribute it 11 | freely, subject to the following restrictions: 12 | 13 | 1. The origin of this software must not be misrepresented; you must not 14 | claim that you wrote the original software. If you use this software 15 | in a product, an acknowledgment in the product documentation would be 16 | appreciated but is not required. 17 | 2. Altered source versions must be plainly marked as such, and must not be 18 | misrepresented as being the original software. 19 | 3. This notice may not be removed or altered from any source distribution. 20 | 21 | Jean-loup Gailly Mark Adler 22 | jloup@gzip.org madler@alumni.caltech.edu 23 | 24 | If you use the zlib library in a product, we would appreciate *not* 25 | receiving lengthy legal documents to sign. The sources are provided 26 | for free but without warranty of any kind. The library has been 27 | entirely written by Jean-loup Gailly and Mark Adler; it does not 28 | include third-party code. 29 | 30 | If you redistribute modified sources, we would appreciate that you include 31 | in the file ChangeLog history information documenting your changes. Please 32 | read the FAQ for more information on the distribution of modified source 33 | versions. 34 | -------------------------------------------------------------------------------- /innounp-1/sources/lzma2/Decoder/ISLzma2Dec.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-1/sources/lzma2/Decoder/ISLzma2Dec.obj -------------------------------------------------------------------------------- /innounp-1/sources/lzma2/Decoder/ISLzmaDec.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-1/sources/lzma2/Decoder/ISLzmaDec.obj -------------------------------------------------------------------------------- /innounp-1/sources/lzma2/Decoder/compiling.txt: -------------------------------------------------------------------------------- 1 | ISLzmaDec.obj and ISLzma2Dec.obj are compiled using the 2 | Borland C++Builder 6 compiler ("Borland C++ 5.6.4 for Win32") 3 | as follows: 4 | 5 | bcc32 -c -pr -O2 ISLzmaDec.c ISLzma2Dec.c 6 | 7 | Add -v if you wish to enable source-level debugging, which 8 | makes it possible to step through the C code from within 9 | Delphi. 10 | -------------------------------------------------------------------------------- /innounp-1/sources/prep.bat: -------------------------------------------------------------------------------- 1 | @echo Prepare before build. Expand the templates 2 | @echo Run this before first compile 3 | @echo Needs Win2K+ 4 | del StructList.inc 5 | del CompressList.inc 6 | del StructVer??????.pas 7 | del CompressVer????.pas 8 | for /f "tokens=1,2" %%a in (StructList) do ( 9 | replace DEFVER %%a _EXTSUF_ "%%b" StructVer%%a%%b.pas 10 | echo StructVer%%a%%b,>> StructList.inc 11 | ) 12 | echo empty>>StructList.inc 13 | for /f %%a in (CompressList) do ( 14 | replace DEFVER %%a CompressVer%%a.pas 15 | echo CompressVer%%a,>> CompressList.inc 16 | ) 17 | echo empty>>CompressList.inc 18 | 19 | @rem Prepare version information 20 | copy version.rc.in version.rc > nul 21 | for /f "tokens=1,2 delims==;" %%a in (VersionInfo.inc) do ( 22 | replace %%a %%b -- version.rc 23 | ) 24 | brcc32 -foversion.res version.rc > nul 25 | del version.rc > nul 26 | -------------------------------------------------------------------------------- /innounp-1/sources/prepver.bat: -------------------------------------------------------------------------------- 1 | @rem Prepare version information 2 | copy version.rc.in version.rc > nul 3 | for /f "tokens=1,2 delims==;" %%a in (VersionInfo.inc) do ( 4 | replace %%a %%b -- version.rc 5 | ) 6 | brcc32 -foversion.res version.rc > nul 7 | del version.rc > nul 8 | -------------------------------------------------------------------------------- /innounp-1/sources/res.bat: -------------------------------------------------------------------------------- 1 | @rem Prepare version information 2 | copy version.rc.in version.rc > nul 3 | for /f "tokens=1,2 delims==;" %%a in (VersionInfo.inc) do ( 4 | replace %%a %%b -- version.rc 5 | ) 6 | "%ProgramFiles%\Embarcadero\Studio\17.0\bin\brcc32.exe" -foversion.res version.rc > nul 7 | rem del version.rc > nul 8 | -------------------------------------------------------------------------------- /innounp-1/sources/rls.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | if -%1==- goto usage 3 | call bin %1 4 | call src %1src 5 | rem copy /b innounp.htm + count.php index.phtml 6 | copy /b innounp.htm release\index.phtml 7 | goto end 8 | 9 | :usage 10 | echo Makes a source release and a binary release 11 | echo Usage: rls release-name 12 | 13 | :end 14 | -------------------------------------------------------------------------------- /innounp-1/sources/src.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | if -%1==- goto usage 3 | if not exist release md release 4 | if exist release\%1.rar del release\%1.rar 5 | rar a -s -m5 -md1024 release\%1.rar innounp.dpr *.pas *.bat StructList CompressList VersionInfo.inc StripReloc.dpr version.inc licenses\*.* innounp.htm zlib\*.obj LzmaDecode\*.obj lzma2\Decoder\*.* bzip\*.obj crypt\*.obj replace.exe *.in innounp.manifest -xStructVer*.pas -xCompressVer????.pas 6 | goto end 7 | 8 | :usage 9 | echo Makes a source release (output is release\release-name.rar) 10 | echo Usage: src release-name 11 | 12 | :end 13 | -------------------------------------------------------------------------------- /innounp-1/sources/version.rc: -------------------------------------------------------------------------------- 1 | 2 | #define VERSION_VAL 1,70,0,0 3 | #define VERSION_VAL_STRING "1.70.0" 4 | 5 | VS_VERSION_INFO VERSIONINFO 6 | FILEVERSION VERSION_VAL 7 | PRODUCTVERSION VERSION_VAL 8 | FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 9 | #if defined(_DEBUG) || defined(DEBUG) 10 | FILEFLAGS VS_FF_DEBUG 11 | #elseif PCRE_PRERELEASE 12 | FILEFLAGS VS_FF_PRERELEASE 13 | #else 14 | FILEFLAGS 0 15 | #endif 16 | FILEOS VOS__WINDOWS32 17 | FILETYPE VFT_APP 18 | BEGIN 19 | BLOCK "StringFileInfo" 20 | BEGIN 21 | BLOCK "040904b0" 22 | BEGIN 23 | VALUE "FileDescription", "InnoUnp - Inno Setup Unpacker\0" 24 | VALUE "ProductName", "Inno Setup Unpacker\0" 25 | VALUE "ProductVersion", VERSION_VAL_STRING "\0" 26 | VALUE "FileVersion", VERSION_VAL_STRING "\0" 27 | VALUE "InternalName", "innounp.exe\0" 28 | VALUE "OriginalFilename", "innounp.exe\0" 29 | VALUE "LegalCopyright", "(c) 2004-2024 QuickeneR., JR\0" 30 | VALUE "Licence", "GNU General Public License (GPL)\0" 31 | VALUE "Info", "http://innounp.sourceforge.net/\0" 32 | END 33 | END 34 | BLOCK "VarFileInfo" 35 | BEGIN 36 | VALUE "Translation", 0x409, 1200 37 | END 38 | END 39 | 40 | 1 24 "innounp.manifest" 41 | 42 | -------------------------------------------------------------------------------- /innounp-1/sources/version.rc.in: -------------------------------------------------------------------------------- 1 | 2 | #define VERSION_VAL IUV_MAJOR,IUV_MINOR,IUV_RELEASE,0 3 | #define VERSION_VAL_STRING "IUV_MAJOR.IUV_MINOR.IUV_RELEASE" 4 | 5 | VS_VERSION_INFO VERSIONINFO 6 | FILEVERSION VERSION_VAL 7 | PRODUCTVERSION VERSION_VAL 8 | FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 9 | #if defined(_DEBUG) || defined(DEBUG) 10 | FILEFLAGS VS_FF_DEBUG 11 | #elseif PCRE_PRERELEASE 12 | FILEFLAGS VS_FF_PRERELEASE 13 | #else 14 | FILEFLAGS 0 15 | #endif 16 | FILEOS VOS__WINDOWS32 17 | FILETYPE VFT_APP 18 | BEGIN 19 | BLOCK "StringFileInfo" 20 | BEGIN 21 | BLOCK "040904b0" 22 | BEGIN 23 | VALUE "FileDescription", "InnoUnp - Inno Setup Unpacker\0" 24 | VALUE "ProductName", "Inno Setup Unpacker\0" 25 | VALUE "ProductVersion", VERSION_VAL_STRING "\0" 26 | VALUE "FileVersion", VERSION_VAL_STRING "\0" 27 | VALUE "InternalName", "innounp.exe\0" 28 | VALUE "OriginalFilename", "innounp.exe\0" 29 | VALUE "LegalCopyright", "(c) 2004-2024 QuickeneR., JR\0" 30 | VALUE "Licence", "GNU General Public License (GPL)\0" 31 | VALUE "Info", "http://innounp.sourceforge.net/\0" 32 | END 33 | END 34 | BLOCK "VarFileInfo" 35 | BEGIN 36 | VALUE "Translation", 0x409, 1200 37 | END 38 | END 39 | 40 | 1 24 "innounp.manifest" 41 | 42 | -------------------------------------------------------------------------------- /innounp-1/sources/version.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-1/sources/version.res -------------------------------------------------------------------------------- /innounp-1/sources/zlib/adler32.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-1/sources/zlib/adler32.obj -------------------------------------------------------------------------------- /innounp-1/sources/zlib/crc32.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-1/sources/zlib/crc32.obj -------------------------------------------------------------------------------- /innounp-1/sources/zlib/inffast.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-1/sources/zlib/inffast.obj -------------------------------------------------------------------------------- /innounp-1/sources/zlib/inflate.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-1/sources/zlib/inflate.obj -------------------------------------------------------------------------------- /innounp-1/sources/zlib/inftrees.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-1/sources/zlib/inftrees.obj -------------------------------------------------------------------------------- /innounp-1/sources/zlib/trees.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-1/sources/zlib/trees.obj -------------------------------------------------------------------------------- /innounp-1/sources/zlib/zutil.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-1/sources/zlib/zutil.obj -------------------------------------------------------------------------------- /innounp-2/bin/innounp-2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-2/bin/innounp-2.zip -------------------------------------------------------------------------------- /innounp-2/docs/Instructions.txt: -------------------------------------------------------------------------------- 1 | Instructions 2 | ============ 3 | 4 | Before compiling the project, the structure files of the different Inno Setup 5 | versions must be prepared. 6 | 7 | 1. Requirements: 8 | ---------------- 9 | - The unit "Struct.pas" of all versions to be supported each renamed to "Structvvvvu". 10 | Inside the unit the name of the unit must be adapted. 11 | - "StructTemplate.pas" as template for the structure interface units 12 | - The list "StructList" of all supported versions 13 | - "CompressTemplate.pas" as template for the zlib compression versions 14 | - The list "CompressList" of all supported zlib versions 15 | - Edit "VersionInfo.inc" to hold the correct version of innounp application 16 | 17 | 2. Preparation: 18 | --------------- 19 | - Generate the units "StructVervvvvu" as interfaces to the above mentioned 20 | structure unit. 21 | - Generate the include file "StructList.inc" 22 | - Generate the units "CompressVervvvv" 23 | - Generate the include file "CompressList.inc" 24 | - Generate the resource script "version.rc" from "VersionInfo.inc" 25 | - Compile "version.rc" to resource file ""version.res" 26 | 27 | To simplify the preparation, the batch script "prep.bat" can be used which will 28 | perform all these steps in one go. 29 | 30 | 3. Compiling 31 | ------------ 32 | All sources are adapted to use Unicode strings (native string type since Delphi 2009). 33 | Compilation was tested with Delphi 10 Seattle 34 | 35 | J. Rathlev, June 2024 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /innounp-2/readme.md: -------------------------------------------------------------------------------- 1 | ### Inno Setup Unpacker - Console version 2 | 3 | #### Unpacker for installations made by Inno Setup 4 | 5 | #### Supports Inno Setup versions 2.0.7 to 6.4.3 6 | 7 | ##### Branch of the project on [SourceForge](http://sourceforge.net/projects/innounp) 8 | 9 | [Inno Setup](http://www.jrsoftware.org/isinfo.php) is a popular program 10 | for making software installations. *Inno Setup Unpacker* is a console application 11 | to verify and get files out of the self-extracting executable. 12 | 13 | Since there have been no updates of the *SourceForge* project since 2020 and the 14 | source codes are not yet adapted to the current Delphi versions (Unicode strings are 15 | the native type since *Delphi 2009*), I have modified them so that they can be 16 | compiled with newer Delphi versions (tested with *Delphi 10 Seattle*). 17 | In addition, some errors have been fixed and new command line options (*-l*, *-i* and *-u*) were added, as well as exit codes to support the use in batch files. 18 | 19 | The install script is saved in UTF-8 format. 20 | 21 | The program has also been adapted to *Inno Setup* versions 6.2 and 6.4.3. 22 | 23 | [Application download](https://github.com/jrathlev/InnoUnpacker-Windows-GUI/tree/master/innounp-2/bin) 24 | 25 | [Home page](https://www.rathlev-home.de/index-e.html?tools/prog-e.html#unpack) 26 | 27 | -------------------------------------------------------------------------------- /innounp-2/sources/ArcFour.pas: -------------------------------------------------------------------------------- 1 | unit ArcFour; 2 | 3 | { 4 | Inno Setup 5 | Copyright (C) 1997-2004 Jordan Russell 6 | Portions by Martijn Laan 7 | For conditions of distribution and use, see LICENSE.TXT. 8 | 9 | Interface to ISCrypt.dll (ARCFOUR encryption/decryption) 10 | 11 | $jrsoftware: issrc/Projects/ArcFour.pas,v 1.2 2004/04/26 19:11:23 jr Exp $ 12 | modified but updatable 13 | } 14 | 15 | interface 16 | 17 | uses 18 | Windows; 19 | 20 | type 21 | TArcFourContext = record 22 | state: array[0..255] of Byte; 23 | x, y: Byte; 24 | end; 25 | 26 | function ArcFourInitFunctions(Module: HMODULE): Boolean; stdcall; 27 | procedure ArcFourInit(var Context: TArcFourContext; const Key; 28 | KeyLength: Cardinal); stdcall; 29 | procedure ArcFourCrypt(var Context: TArcFourContext; const InBuffer; 30 | var OutBuffer; Length: Cardinal); stdcall; 31 | procedure ArcFourDiscard(var Context: TArcFourContext; Bytes: Cardinal); stdcall; 32 | 33 | implementation 34 | 35 | {$L crypt\iscrypt.obj} 36 | 37 | {var 38 | _ISCryptGetVersion: function: Integer; stdcall; 39 | _ArcFourInit: procedure(var context: TArcFourContext; const key; 40 | key_length: Cardinal); stdcall; 41 | _ArcFourCrypt: procedure(var context: TArcFourContext; const in_buffer; 42 | var out_buffer; length: Cardinal); stdcall;} 43 | 44 | 45 | function ArcFourInitFunctions(Module: HMODULE): Boolean; 46 | begin 47 | (* _ISCryptGetVersion := GetProcAddress(Module, 'ISCryptGetVersion'); 48 | _ArcFourInit := GetProcAddress(Module, 'ArcFourInit'); 49 | _ArcFourCrypt := GetProcAddress(Module, 'ArcFourCrypt'); 50 | if Assigned(_ISCryptGetVersion) and Assigned(_ArcFourInit) and 51 | Assigned(_ArcFourCrypt) then begin 52 | { Verify that the DLL's version is what we expect } 53 | Result := (_ISCryptGetVersion = 1); 54 | end 55 | else begin 56 | Result := False; 57 | _ISCryptGetVersion := nil; 58 | _ArcFourInit := nil; 59 | _ArcFourCrypt := nil; 60 | end*) 61 | Result:=true; 62 | end; 63 | 64 | procedure ArcFourInit(var Context: TArcFourContext; const Key; 65 | KeyLength: Cardinal); 66 | external; 67 | {begin 68 | _ArcFourInit(Context, Key, KeyLength); 69 | end;} 70 | 71 | procedure ArcFourCrypt(var Context: TArcFourContext; const InBuffer; 72 | var OutBuffer; Length: Cardinal); 73 | external; 74 | {begin 75 | _ArcFourCrypt(Context, InBuffer, OutBuffer, Length); 76 | end;} 77 | 78 | procedure ArcFourDiscard(var Context: TArcFourContext; Bytes: Cardinal); 79 | begin 80 | ArcFourCrypt(Context, Pointer(nil)^, Pointer(nil)^, Bytes); 81 | end; 82 | 83 | end. 84 | -------------------------------------------------------------------------------- /innounp-2/sources/CallOptimizer.pas: -------------------------------------------------------------------------------- 1 | unit CallOptimizer; 2 | 3 | { 4 | Inno Setup 5 | Copyright (C) 1997-2004 Jordan Russell 6 | Portions by Martijn Laan 7 | For conditions of distribution and use, see LICENSE.TXT. 8 | 9 | Call Instruction Optimizer 10 | 11 | $jrsoftware: issrc/Projects/CallOptimizer.pas,v 1.3 2004/02/25 22:17:01 jr Exp $ 12 | } 13 | 14 | interface 15 | 16 | type 17 | TCallInstructionOptimizer = class 18 | private 19 | FEncode: Boolean; 20 | FOffset: LongWord; 21 | FAddr: LongWord; 22 | FAddrBytesLeft: Cardinal; 23 | public 24 | constructor Create(AEncode: Boolean); 25 | procedure Code(var Buffer; BufSize: Cardinal); 26 | end; 27 | 28 | implementation 29 | 30 | { TCallInstructionOptimizer } 31 | 32 | constructor TCallInstructionOptimizer.Create(AEncode: Boolean); 33 | begin 34 | inherited Create; 35 | FEncode := AEncode; 36 | FOffset := 5; { size of JMP/CALL xx xx xx xx } 37 | end; 38 | 39 | procedure TCallInstructionOptimizer.Code(var Buffer; BufSize: Cardinal); 40 | type 41 | PByteArray = ^TByteArray; 42 | TByteArray = array[0..$7FFFFFFE] of Byte; 43 | var 44 | P: PByteArray; 45 | I: Cardinal; 46 | begin 47 | P := @Buffer; 48 | I := 0; 49 | while I < BufSize do begin 50 | if FAddrBytesLeft = 0 then begin 51 | { Does it appear to be a CALL or JMP instruction with a relative 32-bit 52 | address? If so, we're going to change the address to be relative to the 53 | beginning instead of to the next instruction. } 54 | if (P[I] = $E8) or (P[I] = $E9) then begin 55 | FAddr := FOffset; 56 | if not FEncode then 57 | FAddr := -FAddr; 58 | FAddrBytesLeft := 4; 59 | end; 60 | end 61 | else begin 62 | Inc(FAddr, P[I]); 63 | P[I] := Byte(FAddr); 64 | FAddr := FAddr shr 8; 65 | Dec(FAddrBytesLeft); 66 | end; 67 | Inc(I); 68 | Inc(FOffset); { yes, this can wrap around, but that's fine } 69 | end; 70 | end; 71 | 72 | end. 73 | -------------------------------------------------------------------------------- /innounp-2/sources/CmnFunc2.pas: -------------------------------------------------------------------------------- 1 | unit CmnFunc2; 2 | 3 | { 4 | Inno Setup 5 | Copyright (C) 1997-2005 Jordan Russell 6 | Portions by Martijn Laan 7 | For conditions of distribution and use, see LICENSE.TXT. 8 | 9 | Common non-VCL functions 10 | 11 | $jrsoftware: issrc/Projects/CmnFunc2.pas,v 1.68 2005/02/19 10:23:38 mlaan Exp $ 12 | } 13 | 14 | {$B-,R-} 15 | 16 | interface 17 | 18 | function NewFileExists(const Name: String): Boolean; 19 | function DirExists(const Name: String): Boolean; 20 | function FileOrDirExists(const Name: String): Boolean; 21 | function AddQuotes(const S: String): String; 22 | function RemoveQuotes(const S: String): String; 23 | function IsWildcard(const Pattern: String): Boolean; 24 | function WildcardMatch(const Text, Pattern: PChar): Boolean; 25 | function Win32ErrorString(ErrorCode: Integer): String; 26 | 27 | implementation 28 | 29 | uses 30 | Winapi.Windows, System.SysUtils, PathFunc; 31 | 32 | function InternalGetFileAttr(const Name: String): Integer; 33 | begin 34 | Result := GetFileAttributes(PChar(RemoveBackslashUnlessRoot(Name))); 35 | end; 36 | 37 | function NewFileExists(const Name: String): Boolean; 38 | { Returns True if the specified file exists. 39 | This function is better than Delphi's FileExists function because it works 40 | on files in directories that don't have "list" permission. There is, however, 41 | one other difference: FileExists allows wildcards, but this function does 42 | not. } 43 | var 44 | Attr: Integer; 45 | begin 46 | Attr := InternalGetFileAttr(Name); 47 | Result := (Attr <> -1) and (Attr and faDirectory = 0); 48 | end; 49 | 50 | function DirExists(const Name: String): Boolean; 51 | { Returns True if the specified directory name exists. The specified name 52 | may include a trailing backslash. 53 | NOTE: Delphi's FileCtrl unit has a similar function called DirectoryExists. 54 | However, the implementation is different between Delphi 1 and 2. (Delphi 1 55 | does not count hidden or system directories as existing.) } 56 | var 57 | Attr: Integer; 58 | begin 59 | Attr := InternalGetFileAttr(Name); 60 | Result := (Attr <> -1) and (Attr and faDirectory <> 0); 61 | end; 62 | 63 | function FileOrDirExists(const Name: String): Boolean; 64 | { Returns True if the specified directory or file name exists. The specified 65 | name may include a trailing backslash. } 66 | begin 67 | Result := InternalGetFileAttr(Name) <> -1; 68 | end; 69 | 70 | function AddQuotes(const S: String): String; 71 | { Adds a quote (") character to the left and right sides of the string if 72 | the string contains a space and it didn't have quotes already. This is 73 | primarily used when spawning another process with a long filename as one of 74 | the parameters. } 75 | begin 76 | Result := Trim(S); 77 | if (PathPos(' ', Result) <> 0) and 78 | ((Result[1] <> '"') or (PathLastChar(Result)^ <> '"')) then 79 | Result := '"' + Result + '"'; 80 | end; 81 | 82 | function RemoveQuotes(const S: String): String; 83 | { Opposite of AddQuotes; removes any quotes around the string. } 84 | begin 85 | Result := S; 86 | while (Result <> '') and (Result[1] = '"') do 87 | Delete(Result, 1, 1); 88 | while (Result <> '') and (PathLastChar(Result)^ = '"') do 89 | SetLength(Result, Length(Result)-1); 90 | end; 91 | 92 | function IsWildcard(const Pattern: String): Boolean; 93 | begin 94 | Result := (Pos('*', Pattern) <> 0) or (Pos('?', Pattern) <> 0); 95 | end; 96 | 97 | function WildcardMatch(const Text, Pattern: PChar): Boolean; 98 | type 99 | TWildcardMatchResult = (wmFalse, wmTrue, wmAbort); 100 | 101 | function InternalWildcardMatch(T, P: PChar): TWildcardMatchResult; 102 | begin 103 | while P^ <> #0 do begin 104 | case P^ of 105 | '?': ; { Match any character } 106 | '*': begin 107 | Inc(P); 108 | while P^ = '*' do begin 109 | { Consecutive stars act just like one } 110 | Inc(P); 111 | end; 112 | if P^ = #0 then begin 113 | { Trailing star matches everything } 114 | Result := wmTrue; 115 | Exit; 116 | end; 117 | while T^ <> #0 do begin 118 | Result := InternalWildcardMatch(T, P); 119 | if Result <> wmFalse then 120 | Exit; 121 | T := CharNext(T); 122 | end; 123 | Result := wmAbort; 124 | Exit; 125 | end; 126 | else 127 | if not PathCharCompare(T, P) then begin 128 | Result := wmFalse; 129 | Exit; 130 | end; 131 | end; 132 | T := CharNext(T); 133 | P := CharNext(P); 134 | end; 135 | if T^ = #0 then 136 | Result := wmTrue 137 | else 138 | Result := wmFalse; 139 | end; 140 | 141 | begin 142 | Result := (InternalWildcardMatch(Text, Pattern) = wmTrue); 143 | end; 144 | 145 | function Win32ErrorString(ErrorCode: Integer): String; 146 | { Like SysErrorMessage but also passes the FORMAT_MESSAGE_IGNORE_INSERTS flag 147 | which allows the function to succeed on errors like 129 } 148 | var 149 | Len: Integer; 150 | Buffer: array[0..1023] of Char; 151 | begin 152 | Len := FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM or 153 | FORMAT_MESSAGE_IGNORE_INSERTS or FORMAT_MESSAGE_ARGUMENT_ARRAY, nil, 154 | ErrorCode, 0, Buffer, SizeOf(Buffer), nil); 155 | while (Len > 0) and (Buffer[Len - 1] in [#0..#32, '.']) do 156 | Dec(Len); 157 | SetString(Result, Buffer, Len); 158 | end; 159 | 160 | end. 161 | -------------------------------------------------------------------------------- /innounp-2/sources/CompressList: -------------------------------------------------------------------------------- 1 | 4008 2 | 4107 -------------------------------------------------------------------------------- /innounp-2/sources/CompressTemplate.pas: -------------------------------------------------------------------------------- 1 | unit CompressVerDEFVER; 2 | 3 | interface 4 | uses zlibDEFVER, Compress, FileClass; 5 | 6 | type 7 | TZlibBlockReaderDEFVER = class (TAbstractBlockReader) 8 | protected 9 | Data: TDeflateBlockReadData; 10 | public 11 | constructor Create(AFile: TFile; ADecompressorClass: TCustomDecompressorClass); override; 12 | destructor Destroy; override; 13 | procedure Read(var Buffer; Count: Cardinal); override; 14 | end; 15 | 16 | implementation 17 | 18 | constructor TZlibBlockReaderDEFVER.Create(AFile: TFile; ADecompressorClass: TCustomDecompressorClass); 19 | begin 20 | InflateBlockReadBegin(AFile, Data); 21 | end; 22 | 23 | destructor TZlibBlockReaderDEFVER.Destroy; 24 | begin 25 | InflateBlockReadEnd(Data); 26 | end; 27 | 28 | procedure TZlibBlockReaderDEFVER.Read(var Buffer; Count: Cardinal); 29 | begin 30 | InflateBlockRead(Data,Buffer,Count); 31 | end; 32 | 33 | end. 34 | -------------------------------------------------------------------------------- /innounp-2/sources/CompressVer4008.pas: -------------------------------------------------------------------------------- 1 | unit CompressVer4008; 2 | 3 | interface 4 | uses zlib4008, Compress, FileClass; 5 | 6 | type 7 | TZlibBlockReader4008 = class (TAbstractBlockReader) 8 | protected 9 | Data: TDeflateBlockReadData; 10 | public 11 | constructor Create(AFile: TFile; ADecompressorClass: TCustomDecompressorClass); override; 12 | destructor Destroy; override; 13 | procedure Read(var Buffer; Count: Cardinal); override; 14 | end; 15 | 16 | implementation 17 | 18 | constructor TZlibBlockReader4008.Create(AFile: TFile; ADecompressorClass: TCustomDecompressorClass); 19 | begin 20 | InflateBlockReadBegin(AFile, Data); 21 | end; 22 | 23 | destructor TZlibBlockReader4008.Destroy; 24 | begin 25 | InflateBlockReadEnd(Data); 26 | end; 27 | 28 | procedure TZlibBlockReader4008.Read(var Buffer; Count: Cardinal); 29 | begin 30 | InflateBlockRead(Data,Buffer,Count); 31 | end; 32 | 33 | end. 34 | -------------------------------------------------------------------------------- /innounp-2/sources/CompressVer4107.pas: -------------------------------------------------------------------------------- 1 | unit CompressVer4107; 2 | 3 | interface 4 | uses zlib4107, Compress, FileClass; 5 | 6 | type 7 | TZlibBlockReader4107 = class (TAbstractBlockReader) 8 | protected 9 | Data: TDeflateBlockReadData; 10 | public 11 | constructor Create(AFile: TFile; ADecompressorClass: TCustomDecompressorClass); override; 12 | destructor Destroy; override; 13 | procedure Read(var Buffer; Count: Cardinal); override; 14 | end; 15 | 16 | implementation 17 | 18 | constructor TZlibBlockReader4107.Create(AFile: TFile; ADecompressorClass: TCustomDecompressorClass); 19 | begin 20 | InflateBlockReadBegin(AFile, Data); 21 | end; 22 | 23 | destructor TZlibBlockReader4107.Destroy; 24 | begin 25 | InflateBlockReadEnd(Data); 26 | end; 27 | 28 | procedure TZlibBlockReader4107.Read(var Buffer; Count: Cardinal); 29 | begin 30 | InflateBlockRead(Data,Buffer,Count); 31 | end; 32 | 33 | end. 34 | -------------------------------------------------------------------------------- /innounp-2/sources/Compression.LZMA1SmallDecompressor.pas: -------------------------------------------------------------------------------- 1 | unit Compression.LZMA1SmallDecompressor; 2 | 3 | { 4 | Inno Setup 5 | Copyright (C) 1997-2024 Jordan Russell 6 | Portions by Martijn Laan 7 | For conditions of distribution and use, see LICENSE.TXT. 8 | 9 | Interface to the older, size-optimized LZMA SDK 4.43 decompression OBJ in 10 | Compression.LZMA1SmallDecompressor\LzmaDecode, used by SetupLdr. 11 | } 12 | 13 | interface 14 | 15 | uses 16 | Windows, SysUtils, Compress, Int64Em; 17 | 18 | type 19 | { Internally-used record } 20 | TLZMAInternalDecoderState = record 21 | { NOTE: None of these fields are ever accessed directly by this unit. 22 | They are exposed purely for debugging purposes. } 23 | opaque_Properties: record 24 | lc: Integer; 25 | lp: Integer; 26 | pb: Integer; 27 | DictionarySize: LongWord; 28 | end; 29 | opaque_Probs: Pointer; 30 | opaque_Buffer: Pointer; 31 | opaque_BufferLim: Pointer; 32 | opaque_Dictionary: Pointer; 33 | opaque_Range: LongWord; 34 | opaque_Code: LongWord; 35 | opaque_DictionaryPos: LongWord; 36 | opaque_GlobalPos: LongWord; 37 | opaque_DistanceLimit: LongWord; 38 | opaque_Reps: array[0..3] of LongWord; 39 | opaque_State: Integer; 40 | opaque_RemainLen: Integer; 41 | opaque_TempDictionary: array[0..3] of Byte; 42 | end; 43 | 44 | TLZMA1SmallDecompressor = class(TCustomDecompressor) 45 | private 46 | FReachedEnd: Boolean; 47 | FHeaderProcessed: Boolean; 48 | FDecoderState: TLZMAInternalDecoderState; 49 | FHeapBase: Pointer; 50 | FHeapSize: Cardinal; 51 | FBuffer: array[0..65535] of Byte; 52 | procedure DestroyHeap; 53 | procedure DoRead(var Buffer: Pointer; var BufferSize: Cardinal); 54 | procedure ProcessHeader; 55 | public 56 | destructor Destroy; override; 57 | procedure DecompressInto(var Buffer; Count: Longint); override; 58 | procedure Reset; override; 59 | end; 60 | 61 | implementation 62 | 63 | const 64 | SLZMADataError = 'lzma1smalldecompressor: Compressed data is corrupted (%d)'; 65 | 66 | procedure LZMADataError(const Id: Integer); 67 | begin 68 | raise ECompressDataError.CreateFmt(SLZMADataError, [Id]); 69 | end; 70 | 71 | procedure LZMAInternalError(const Msg: String); 72 | begin 73 | raise ECompressInternalError.CreateFmt('lzma1smalldecompressor: %s', [Msg]); 74 | end; 75 | 76 | procedure LZMAInternalErrorFmt(const Msg: String; const Args: array of const); 77 | begin 78 | LZMAInternalError(Format(Msg, Args)); 79 | end; 80 | 81 | { TLZMA1SmallDecompressor } 82 | 83 | {$L Compression\LzmaDecodeInno.obj} 84 | 85 | type 86 | TLzmaInCallback = record 87 | Read: function(obj: Pointer; var buffer: Pointer; var bufferSize: Cardinal): Integer; cdecl; 88 | end; 89 | 90 | const 91 | LZMA_RESULT_OK = 0; 92 | LZMA_RESULT_DATA_ERROR = 1; 93 | 94 | LZMA_PROPERTIES_SIZE = 5; 95 | 96 | function LzmaMyDecodeProperties(var vs: TLZMAInternalDecoderState; 97 | vsSize: Integer; const propsData; propsDataSize: Integer; 98 | var outPropsSize: LongWord; var outDictionarySize: LongWord): Integer; cdecl; external name '_LzmaMyDecodeProperties'; 99 | procedure LzmaMyDecoderInit(var vs: TLZMAInternalDecoderState; 100 | probsPtr: Pointer; dictionaryPtr: Pointer); cdecl; external name '_LzmaMyDecoderInit'; 101 | function LzmaDecode(var vs: TLZMAInternalDecoderState; 102 | var inCallback: TLzmaInCallback; var outStream; outSize: Cardinal; 103 | var outSizeProcessed: Cardinal): Integer; cdecl; external name '_LzmaDecode'; 104 | 105 | type 106 | TLZMADecompressorCallbackData = record 107 | Callback: TLzmaInCallback; 108 | Instance: TLZMA1SmallDecompressor; 109 | end; 110 | 111 | function ReadFunc(obj: Pointer; var buffer: Pointer; var bufferSize: Cardinal): Integer; cdecl; 112 | begin 113 | TLZMADecompressorCallbackData(obj^).Instance.DoRead(buffer, bufferSize); 114 | { Don't bother returning any sort of failure code, because if DoRead failed, 115 | it would've raised an exception } 116 | Result := LZMA_RESULT_OK; 117 | end; 118 | 119 | destructor TLZMA1SmallDecompressor.Destroy; 120 | begin 121 | DestroyHeap; 122 | inherited; 123 | end; 124 | 125 | procedure TLZMA1SmallDecompressor.DestroyHeap; 126 | begin 127 | FHeapSize := 0; 128 | if Assigned(FHeapBase) then begin 129 | VirtualFree(FHeapBase, 0, MEM_RELEASE); 130 | FHeapBase := nil; 131 | end; 132 | end; 133 | 134 | procedure TLZMA1SmallDecompressor.DoRead(var Buffer: Pointer; var BufferSize: Cardinal); 135 | begin 136 | Buffer := @FBuffer; 137 | BufferSize := 0; 138 | if not FReachedEnd then begin 139 | BufferSize := ReadProc(FBuffer, SizeOf(FBuffer)); 140 | if BufferSize = 0 then 141 | FReachedEnd := True; { not really necessary, but for consistency } 142 | end; 143 | end; 144 | 145 | procedure TLZMA1SmallDecompressor.ProcessHeader; 146 | var 147 | Props: array[0..LZMA_PROPERTIES_SIZE-1] of Byte; 148 | ProbsSize, DictionarySize: LongWord; 149 | NewHeapSize: Cardinal; 150 | begin 151 | { Read header fields } 152 | if ReadProc(Props, SizeOf(Props)) <> SizeOf(Props) then 153 | LZMADataError(1); 154 | 155 | { Initialize the LZMA decoder state structure, and calculate the size of 156 | the Probs and Dictionary } 157 | FillChar(FDecoderState, SizeOf(FDecoderState), 0); 158 | if LzmaMyDecodeProperties(FDecoderState, SizeOf(FDecoderState), Props, 159 | SizeOf(Props), ProbsSize, DictionarySize) <> LZMA_RESULT_OK then 160 | LZMADataError(3); 161 | if DictionarySize > LongWord(64 shl 20) then 162 | { sanity check: we only use dictionary sizes <= 64 MB } 163 | LZMADataError(7); 164 | 165 | { Allocate memory for the Probs and Dictionary, and pass the pointers over } 166 | NewHeapSize := ProbsSize + DictionarySize; 167 | if FHeapSize <> NewHeapSize then begin 168 | DestroyHeap; 169 | FHeapBase := VirtualAlloc(nil, NewHeapSize, MEM_COMMIT, PAGE_READWRITE); 170 | if FHeapBase = nil then 171 | OutOfMemoryError; 172 | FHeapSize := NewHeapSize; 173 | end; 174 | LzmaMyDecoderInit(FDecoderState, FHeapBase, Pointer(Cardinal(FHeapBase) + ProbsSize)); 175 | 176 | FHeaderProcessed := True; 177 | end; 178 | 179 | procedure TLZMA1SmallDecompressor.DecompressInto(var Buffer; Count: Longint); 180 | var 181 | CallbackData: TLZMADecompressorCallbackData; 182 | Code: Integer; 183 | OutProcessed: Cardinal; 184 | begin 185 | if not FHeaderProcessed then 186 | ProcessHeader; 187 | CallbackData.Callback.Read := ReadFunc; 188 | CallbackData.Instance := Self; 189 | Code := LzmaDecode(FDecoderState, CallbackData.Callback, Buffer, Count, 190 | OutProcessed); 191 | case Code of 192 | LZMA_RESULT_OK: ; 193 | LZMA_RESULT_DATA_ERROR: LZMADataError(5); 194 | else 195 | LZMAInternalErrorFmt('LzmaDecode failed (%d)', [Code]); 196 | end; 197 | if OutProcessed <> Cardinal(Count) then 198 | LZMADataError(6); 199 | end; 200 | 201 | procedure TLZMA1SmallDecompressor.Reset; 202 | begin 203 | FHeaderProcessed := False; 204 | FReachedEnd := False; 205 | end; 206 | 207 | end. 208 | -------------------------------------------------------------------------------- /innounp-2/sources/CustomVersions.pas: -------------------------------------------------------------------------------- 1 | unit CustomVersions; 2 | 3 | interface 4 | 5 | { Package info structures } 6 | { Extracted from SysUtils.pas } 7 | 8 | type 9 | PPkgName = ^TPkgName; 10 | TPkgName = packed record 11 | HashCode: Byte; 12 | Name: array[0..255] of AnsiChar; 13 | end; 14 | 15 | { PackageUnitFlags: 16 | bit meaning 17 | ----------------------------------------------------------------------------------------- 18 | 0 | main unit 19 | 1 | package unit (dpk source) 20 | 2 | $WEAKPACKAGEUNIT unit 21 | 3 | original containment of $WEAKPACKAGEUNIT (package into which it was compiled) 22 | 4 | implicitly imported 23 | 5..7 | reserved 24 | } 25 | PUnitName = ^TUnitName; 26 | TUnitName = packed record 27 | Flags : Byte; 28 | HashCode: Byte; 29 | Name: array[0..255] of AnsiChar; 30 | end; 31 | 32 | { Package flags: 33 | bit meaning 34 | ----------------------------------------------------------------------------------------- 35 | 0 | 1: never-build 0: always build 36 | 1 | 1: design-time only 0: not design-time only on => bit 2 = off 37 | 2 | 1: run-time only 0: not run-time only on => bit 1 = off 38 | 3 | 1: do not check for dup units 0: perform normal dup unit check 39 | 4..25 | reserved 40 | 26..27| (producer) 0: pre-V4, 1: undefined, 2: c++, 3: Pascal 41 | 28..29| reserved 42 | 30..31| 0: EXE, 1: Package DLL, 2: Library DLL, 3: undefined 43 | } 44 | PPackageInfoHeader = ^TPackageInfoHeader; 45 | TPackageInfoHeader = packed record 46 | Flags: Cardinal; 47 | RequiresCount: Integer; 48 | {Requires: array[0..9999] of TPkgName; 49 | ContainsCount: Integer; 50 | Contains: array[0..9999] of TUnitName;} 51 | end; 52 | 53 | function CheckResToolsVersion(Filename:string) : boolean; 54 | 55 | implementation 56 | 57 | uses Winapi.Windows, System.SysUtils, System.StrUtils; 58 | 59 | function PackageInfoTable(Module: HMODULE): PPackageInfoHeader; 60 | var 61 | ResInfo: HRSRC; 62 | Data: THandle; 63 | begin 64 | Result := nil; 65 | ResInfo := FindResource(Module, 'PACKAGEINFO', RT_RCDATA); 66 | if ResInfo <> 0 then 67 | begin 68 | Data := LoadResource(Module, ResInfo); 69 | if Data <> 0 then 70 | try 71 | Result := LockResource(Data); 72 | UnlockResource(Data); 73 | finally 74 | FreeResource(Data); 75 | end; 76 | end; 77 | end; 78 | 79 | function CheckResToolsVersion(Filename:string) : boolean; 80 | var 81 | hMod: HMODULE; 82 | InfoTable: PPackageInfoHeader; 83 | i: integer; 84 | PkgName: PPkgName; 85 | UName : PUnitName; 86 | Count: Integer; 87 | begin 88 | Result := false; 89 | hMod := LoadLibraryEx(PChar(Filename), 0, LOAD_LIBRARY_AS_DATAFILE); 90 | 91 | // Loading very large files in datafile mode requires a lot of memory 92 | // And can sometimes fail if system memory is not very large. 93 | // If this is the case then let's try to load file a regular module 94 | if (hMod = 0) and (GetLastError() = ERROR_NOT_ENOUGH_MEMORY) then 95 | hMod := LoadLibraryEx(PChar(Filename), 0, 0); 96 | 97 | if hMod=0 then exit; 98 | 99 | InfoTable := PackageInfoTable(hMod); 100 | 101 | if Assigned(InfoTable) then 102 | begin 103 | PkgName := PPkgName(Integer(InfoTable) + SizeOf(InfoTable^)); 104 | { Skip the Requires list } 105 | for I := 0 to InfoTable.RequiresCount - 1 do Inc(Integer(PkgName), StrLen(PkgName.Name) + 2); 106 | Count := Integer(Pointer(PkgName)^); 107 | UName := PUnitName(Integer(PkgName) + 4); 108 | for I := 0 to Count - 1 do 109 | begin 110 | if AnsiStartsText('SetupLdr_D2009', UName.Name) then 111 | begin 112 | Result := True; 113 | break 114 | end; 115 | Inc(Integer(UName), StrLen(UName.Name) + 3); 116 | end; 117 | end; 118 | 119 | FreeLibrary(hMod); 120 | end; 121 | 122 | end. 123 | -------------------------------------------------------------------------------- /innounp-2/sources/FileNull.pas: -------------------------------------------------------------------------------- 1 | unit FileNull; 2 | 3 | interface 4 | 5 | uses Int64Em, FileClass; 6 | 7 | type 8 | TNullFile = class(TFile) 9 | protected 10 | function GetPosition: Integer64; override; 11 | function GetSize: Integer64; override; 12 | public 13 | constructor Create(); 14 | 15 | function Read(var Buffer; Count: Cardinal): Cardinal; override; 16 | procedure Seek64(Offset: Integer64); override; 17 | procedure Truncate; override; 18 | procedure WriteBuffer(const Buffer; Count: Cardinal); override; 19 | end; 20 | 21 | implementation 22 | 23 | uses System.SysUtils; 24 | 25 | { TNullFile } 26 | 27 | constructor TNullFile.Create; 28 | begin 29 | // 30 | end; 31 | 32 | function TNullFile.GetPosition: Integer64; 33 | begin 34 | Result.Lo := 0; 35 | Result.Hi := 0; 36 | end; 37 | 38 | function TNullFile.GetSize: Integer64; 39 | begin 40 | Result.Lo := 0; 41 | Result.Hi := 0; 42 | end; 43 | 44 | function TNullFile.Read(var Buffer; Count: Cardinal): Cardinal; 45 | begin 46 | raise Exception.Create('Can not read from Null file'); 47 | end; 48 | 49 | procedure TNullFile.Seek64(Offset: Integer64); 50 | begin 51 | // Do nothing 52 | end; 53 | 54 | procedure TNullFile.Truncate; 55 | begin 56 | // Do nothing 57 | end; 58 | 59 | procedure TNullFile.WriteBuffer(const Buffer; Count: Cardinal); 60 | begin 61 | // Do nothing 62 | end; 63 | 64 | end. 65 | -------------------------------------------------------------------------------- /innounp-2/sources/InstFunc.pas: -------------------------------------------------------------------------------- 1 | unit InstFunc; 2 | 3 | { 4 | Inno Setup 5 | Copyright (C) 1997-2004 Jordan Russell 6 | Portions by Martijn Laan 7 | For conditions of distribution and use, see LICENSE.TXT. 8 | 9 | Misc. installation functions 10 | 11 | $jrsoftware: issrc/Projects/InstFunc.pas,v 1.30 2004/02/16 02:58:30 jr Exp $ 12 | } 13 | 14 | interface 15 | 16 | function GenerateUniqueName(Path: String; const Extension: String): String; 17 | procedure Win32ErrorMsg(const FunctionName: String); 18 | 19 | implementation 20 | 21 | uses 22 | Winapi.Windows, System.SysUtils, PathFunc, CmnFunc2, Msgs, MsgIDs; 23 | 24 | procedure Win32ErrorMsg(const FunctionName: String); 25 | var 26 | LastError: DWORD; 27 | begin 28 | LastError := GetLastError; 29 | raise Exception.Create(FmtSetupMessage(msgErrorFunctionFailedWithMessage, 30 | [FunctionName, IntToStr(LastError), SysErrorMessage(LastError)])); 31 | end; 32 | 33 | function GenerateUniqueName(Path: String; const Extension: String): String; 34 | function IntToBase32(Number: Longint): String; 35 | const 36 | Table: array[0..31] of Char = '0123456789ABCDEFGHIJKLMNOPQRSTUV'; 37 | var 38 | I: Integer; 39 | begin 40 | Result := ''; 41 | for I := 0 to 4 do begin 42 | Insert(Table[Number and 31], Result, 1); 43 | Number := Number shr 5; 44 | end; 45 | end; 46 | var 47 | Rand, RandOrig: Longint; 48 | begin 49 | Path := AddBackslash(Path); 50 | RandOrig := Random($2000000); 51 | Rand := RandOrig; 52 | repeat 53 | Inc(Rand); 54 | if Rand > $1FFFFFF then Rand := 0; 55 | if Rand = RandOrig then 56 | { practically impossible to go through 33 million possibilities, 57 | but check "just in case"... } 58 | raise Exception.Create(FmtSetupMessage1(msgErrorTooManyFilesInDir, 59 | RemoveBackslashUnlessRoot(Path))); 60 | { Generate a random name } 61 | Result := Path + 'is-' + IntToBase32(Rand) + Extension; 62 | until not FileOrDirExists(Result); 63 | end; 64 | 65 | end. 66 | -------------------------------------------------------------------------------- /innounp-2/sources/MsgIDs.pas: -------------------------------------------------------------------------------- 1 | unit MsgIDs; 2 | 3 | { 4 | Inno Setup 5 | Copyright (C) 1998-2000 Jordan Russell 6 | Portions by Martijn Laan 7 | For conditions of distribution and use, see LICENSE.TXT. 8 | 9 | Message identifiers 10 | 11 | $jrsoftware: issrc/Projects/MsgIDs.pas,v 1.27 2004/02/25 01:54:53 jr Exp $ 12 | } 13 | 14 | interface 15 | 16 | { Note: When any messages are added/deleted/changed, MessagesHdrID needs to be 17 | updated in Struct.pas } 18 | 19 | type 20 | TSetupMessageID = ( 21 | msgErrorReadingSource, 22 | msgErrorCopying, 23 | msgErrorCreatingDir, 24 | msgLastErrorMessage, 25 | msgSetupFileCorrupt, 26 | msgSetupFileCorruptOrWrongVer, 27 | msgErrorRegisterServerMissingExport, 28 | msgErrorTitle, 29 | msgErrorRestartingComputer, 30 | msgErrorRegOpenKey, 31 | msgErrorTooManyFilesInDir, 32 | msgErrorFunctionFailed, 33 | msgErrorFunctionFailedWithMessage, 34 | msgSourceIsCorrupted, 35 | msgIncorrectPassword 36 | ); 37 | { 38 | msgAboutSetupMenuItem, 39 | msgAboutSetupMessage, 40 | msgAboutSetupNote, 41 | msgAboutSetupTitle, 42 | msgAdminPrivilegesRequired, 43 | msgBadDirName32, 44 | msgBadGroupName, 45 | msgBeveledLabel, 46 | msgBrowseDialogLabel, 47 | msgBrowseDialogTitle, 48 | msgButtonBack, 49 | msgButtonBrowse, 50 | msgButtonCancel, 51 | msgButtonFinish, 52 | msgButtonInstall, 53 | msgButtonNewFolder, 54 | msgButtonNext, 55 | msgButtonNo, 56 | msgButtonNoToAll, 57 | msgButtonOK, 58 | msgButtonWizardBrowse, 59 | msgButtonYes, 60 | msgButtonYesToAll, 61 | msgCannotContinue, 62 | msgChangeDiskTitle, 63 | msgClickFinish, 64 | msgClickNext, 65 | msgCompactInstallation, 66 | msgComponentSize1, 67 | msgComponentSize2, 68 | msgComponentsDiskSpaceMBLabel, 69 | msgConfirmDeleteSharedFile2, 70 | msgConfirmDeleteSharedFileTitle, 71 | msgConfirmTitle, 72 | msgConfirmUninstall, 73 | msgCustomInstallation, 74 | msgDirDoesntExist, 75 | msgDirDoesntExistTitle, 76 | msgDirExists, 77 | msgDirExistsTitle, 78 | msgDirNameTooLong, 79 | msgDiskSpaceMBLabel, 80 | msgDiskSpaceWarning, 81 | msgDiskSpaceWarningTitle, 82 | msgEntryAbortRetryIgnore, 83 | msgErrorChangingAttr, 84 | msgErrorCopying, 85 | msgErrorCreatingDir, 86 | msgErrorCreatingTemp, 87 | msgErrorExecutingProgram, 88 | msgErrorFunctionFailed, 89 | msgErrorFunctionFailedNoCode, 90 | msgErrorFunctionFailedWithMessage, 91 | msgErrorIniEntry, 92 | msgErrorInternal2, 93 | msgErrorOpeningReadme, 94 | msgErrorReadingExistingDest, 95 | msgErrorReadingSource, 96 | msgErrorRegCreateKey, 97 | msgErrorRegisterServer, 98 | msgErrorRegisterServerMissingExport, 99 | msgErrorRegisterTypeLib, 100 | msgErrorRegOpenKey, 101 | msgErrorRegWriteKey, 102 | msgErrorRenamingTemp, 103 | msgErrorReplacingExistingFile, 104 | msgErrorRestartingComputer, 105 | msgErrorRestartReplace, 106 | msgErrorTitle, 107 | msgErrorTooManyFilesInDir, 108 | msgExistingFileNewer, 109 | msgExistingFileReadOnly, 110 | msgExitSetupMessage, 111 | msgExitSetupTitle, 112 | msgFileAbortRetryIgnore, 113 | msgFileAbortRetryIgnore2, 114 | msgFileExists, 115 | msgFileNotInDir2, 116 | msgFinishedHeadingLabel, 117 | msgFinishedLabel, 118 | msgFinishedLabelNoIcons, 119 | msgFinishedRestartLabel, 120 | msgFinishedRestartMessage, 121 | msgFullInstallation, 122 | msgGroupNameTooLong, 123 | msgIncorrectPassword, 124 | msgInfoAfterClickLabel, 125 | msgInfoAfterLabel, 126 | msgInfoBeforeClickLabel, 127 | msgInfoBeforeLabel, 128 | msgInformationTitle, 129 | msgInstallingLabel, 130 | msgInvalidDirName, 131 | msgInvalidDrive, 132 | msgInvalidGroupName, 133 | msgInvalidPath, 134 | msgLastErrorMessage, 135 | msgLdrCannotCreateTemp, 136 | msgLdrCannotExecTemp, 137 | msgLicenseAccepted, 138 | msgLicenseLabel, 139 | msgLicenseLabel3, 140 | msgLicenseNotAccepted, 141 | msgMustEnterGroupName, 142 | msgNewFolderName, 143 | msgNoIconsCheck, 144 | msgNoProgramGroupCheck2, 145 | msgNoRadio, 146 | msgNotOnThisPlatform, 147 | msgNoUninstallWarning, 148 | msgNoUninstallWarningTitle, 149 | msgOnlyAdminCanUninstall, 150 | msgOnlyOnThisPlatform, 151 | msgPasswordEditLabel, 152 | msgPasswordLabel1, 153 | msgPasswordLabel3, 154 | msgPathLabel, 155 | msgPowerUserPrivilegesRequired, 156 | msgPreparingDesc, 157 | msgPreviousInstallNotCompleted, 158 | msgReadyLabel1, 159 | msgReadyLabel2a, 160 | msgReadyLabel2b, 161 | msgReadyMemoComponents, 162 | msgReadyMemoDir, 163 | msgReadyMemoGroup, 164 | msgReadyMemoTasks, 165 | msgReadyMemoType, 166 | msgReadyMemoUserInfo, 167 | msgRunEntryExec, 168 | msgRunEntryShellExec, 169 | msgSelectComponentsDesc, 170 | msgSelectComponentsLabel2, 171 | msgSelectDirBrowseLabel, 172 | msgSelectDirDesc, 173 | msgSelectDirectoryLabel, 174 | msgSelectDirLabel3, 175 | msgSelectDiskLabel2, 176 | msgSelectLanguageLabel, 177 | msgSelectLanguageTitle, 178 | msgSelectStartMenuFolderBrowseLabel, 179 | msgSelectStartMenuFolderDesc, 180 | msgSelectStartMenuFolderLabel3, 181 | msgSelectTasksDesc, 182 | msgSelectTasksLabel2, 183 | msgSetupAborted, 184 | msgSetupAppRunningError, 185 | msgSetupAppTitle, 186 | msgSetupFileCorrupt, 187 | msgSetupFileCorruptOrWrongVer, 188 | msgSetupFileMissing, 189 | msgSetupLdrStartupMessage, 190 | msgSetupWindowTitle, 191 | msgSharedFileNameLabel, 192 | msgSharedFileLocationLabel, 193 | msgShowReadmeCheck, 194 | msgSourceDoesntExist, 195 | msgSourceIsCorrupted, 196 | msgStatusCreateDirs, 197 | msgStatusCreateIcons, 198 | msgStatusCreateIniEntries, 199 | msgStatusCreateRegistryEntries, 200 | msgStatusExtractFiles, 201 | msgStatusRegisterFiles, 202 | msgStatusRollback, 203 | msgStatusSavingUninstall, 204 | msgStatusRunProgram, 205 | msgStatusUninstalling, 206 | msgToUNCPathname, 207 | msgUninstallAppFullTitle, 208 | msgUninstallAppTitle, 209 | msgUninstallDataCorrupted, 210 | msgUninstalledAll, 211 | msgUninstalledAndNeedsRestart, 212 | msgUninstalledMost, 213 | msgUninstallAppRunningError, 214 | msgUninstallNotFound, 215 | msgUninstallOpenError, 216 | msgUninstallStatusLabel, 217 | msgUninstallUnknownEntry, 218 | msgUninstallUnsupportedVer, 219 | msgUserInfoDesc, 220 | msgUserInfoName, 221 | msgUserInfoNameRequired, 222 | msgUserInfoOrg, 223 | msgUserInfoSerial, 224 | msgWelcomeLabel1, 225 | msgWelcomeLabel2, 226 | msgWinVersionTooHighError, 227 | msgWinVersionTooLowError, 228 | msgWizardInfoAfter, 229 | msgWizardInfoBefore, 230 | msgWizardInstalling, 231 | msgWizardLicense, 232 | msgWizardPassword, 233 | msgWizardPreparing, 234 | msgWizardReady, 235 | msgWizardSelectDir, 236 | msgWizardSelectComponents, 237 | msgWizardSelectProgramGroup, 238 | msgWizardSelectTasks, 239 | msgWizardUninstalling, 240 | msgWizardUserInfo, 241 | msgYesRadio); 242 | } 243 | 244 | implementation 245 | 246 | end. 247 | -------------------------------------------------------------------------------- /innounp-2/sources/Msgs.pas: -------------------------------------------------------------------------------- 1 | unit Msgs; 2 | 3 | { 4 | Inno Setup 5 | Copyright (C) 1997-2004 Jordan Russell 6 | Portions by Martijn Laan 7 | For conditions of distribution and use, see LICENSE.TXT. 8 | 9 | Message file handling functions 10 | 11 | $jrsoftware: issrc/Projects/Msgs.pas,v 1.10 2004/02/28 20:48:18 jr Exp $ 12 | } 13 | 14 | interface 15 | 16 | uses 17 | MsgIDs, Struct; 18 | 19 | const 20 | SNewLine = #13#10; { line break } 21 | SNewLine2 = #13#10#13#10; { double line break } 22 | 23 | var 24 | SetupMessages: array[TSetupMessageID] of String; 25 | 26 | function FmtMessage(S: PChar; const Args: array of String): String; 27 | function FmtSetupMessage(const ID: TSetupMessageID; const Args: array of String): String; 28 | function FmtSetupMessage1(const ID: TSetupMessageID; const Arg1: String): String; 29 | 30 | const 31 | { You don't have to translate these. The only time they are used is when an 32 | error occurs before or while the messages file is loaded. Otherwise, it 33 | uses the corresponding messages in the messages file. } 34 | SSetupFileMissing = 'The file %1 is missing from the installation directory. ' + 35 | 'Please correct the problem or obtain a new copy of the program.'; 36 | SSetupFileCorrupt = 'Failed to recognize the file(s) as a valid Inno Setup installer. ' + 37 | 'The setup files may be corrupted or made by an incompatible version.'; 38 | SSetupFileCorruptOrWrongVer = 'The setup files are corrupted, or are ' + 39 | 'incompatible with this version of Setup. Please correct the problem or ' + 40 | 'obtain a new copy of the program.'; 41 | SMsgsFileMissing = 'Messages file "%s" is missing. Please correct ' + 42 | 'the problem or obtain a new copy of the program.'; 43 | 44 | implementation 45 | 46 | uses 47 | Winapi.Windows, System.SysUtils, Compress, CmnFunc2, FileClass; 48 | 49 | const 50 | SMsgsFileTooLarge = 'Internal error: Messages file is too large'; 51 | 52 | function FmtMessage(S: PChar; const Args: array of String): String; 53 | var 54 | P: PChar; 55 | Z: String; 56 | begin 57 | Result := ''; 58 | if S = nil then Exit; 59 | while True do begin 60 | P := StrScan(S, '%'); 61 | if P = nil then begin 62 | Result := Result + S; 63 | Break; 64 | end; 65 | if P <> S then begin 66 | SetString(Z, S, P - S); 67 | Result := Result + Z; 68 | S := P; 69 | end; 70 | Inc(P); 71 | if (P^ >= '1') and (Ord(P^) <= Ord('1') + High(Args)) then begin 72 | Result := Result + Args[Ord(P^) - Ord('1')]; 73 | Inc(S, 2); 74 | end 75 | else begin 76 | Result := Result + '%'; 77 | Inc(S); 78 | if P^ = '%' then 79 | Inc(S); 80 | end; 81 | end; 82 | end; 83 | 84 | function FmtSetupMessage(const ID: TSetupMessageID; const Args: array of String): String; 85 | begin 86 | Result := FmtMessage(PChar(SetupMessages[ID]), Args); 87 | end; 88 | 89 | function FmtSetupMessage1(const ID: TSetupMessageID; const Arg1: String): String; 90 | begin 91 | Result := FmtSetupMessage(ID, [Arg1]); 92 | end; 93 | 94 | procedure FreeSetupMessages; 95 | var 96 | I: TSetupMessageID; 97 | begin 98 | for I := Low(SetupMessages) to High(SetupMessages) do 99 | SetupMessages[I] := ''; 100 | end; 101 | 102 | 103 | initialization 104 | SetupMessages[msgErrorReadingSource]:='An error occurred while trying to read the source file:'; 105 | SetupMessages[msgErrorCopying]:='An error occurred while trying to copy a file:'; 106 | SetupMessages[msgErrorCreatingDir]:='Setup was unable to create the directory "%1"'; 107 | SetupMessages[msgLastErrorMessage]:='%1.%n%nError %2: %3'; 108 | SetupMessages[msgSetupFileCorrupt]:='The setup files are corrupted. Please obtain a new copy of the program.'; 109 | SetupMessages[msgSetupFileCorruptOrWrongVer]:='The setup files are corrupted, or are incompatible with this version of Setup. Please correct the problem or obtain a new copy of the program.'; 110 | SetupMessages[msgErrorRegisterServerMissingExport]:='DllRegisterServer export not found'; 111 | SetupMessages[msgErrorTitle]:='Error'; 112 | SetupMessages[msgErrorRestartingComputer]:='Setup was unable to restart the computer. Please do this manually.'; 113 | SetupMessages[msgErrorRegOpenKey]:='Error opening registry key:%n%1\%2'; 114 | SetupMessages[msgErrorTooManyFilesInDir]:='Unable to create a file in the directory "%1" because it contains too many files'; 115 | SetupMessages[msgErrorFunctionFailed]:='%1 failed; code %2'; 116 | SetupMessages[msgErrorFunctionFailedWithMessage]:='%1 failed; code %2.%n%3'; 117 | SetupMessages[msgSourceIsCorrupted]:='The source file is corrupted'; 118 | SetupMessages[msgIncorrectPassword]:='Incorrect password specified'; 119 | 120 | finalization 121 | FreeSetupMessages; 122 | end. 123 | -------------------------------------------------------------------------------- /innounp-2/sources/PBKDF2.pas: -------------------------------------------------------------------------------- 1 | unit PBKDF2; 2 | 3 | { 4 | Inno Setup 5 | Copyright (C) 1997-2024 Jordan Russell 6 | Portions by Martijn Laan 7 | For conditions of distribution and use, see LICENSE.TXT. 8 | 9 | PBKDF2-HMAC-SHA256 password-based key derivation 10 | 11 | modified for compilation with Delphi 10 by J. Rathlev, January 2025 12 | } 13 | 14 | interface 15 | 16 | uses 17 | System.SysUtils; 18 | 19 | function PBKDF2SHA256(Password: TBytes; const Salt: TBytes; const Iterations, KeyLength: Integer): TBytes; overload; 20 | function PBKDF2SHA256(const Password: String; const Salt: TBytes; const Iterations, KeyLength: Integer): TBytes; overload; 21 | 22 | implementation 23 | 24 | uses 25 | System.Hash, System.Math; 26 | 27 | function PBKDF2SHA256(Password: TBytes; const Salt: TBytes; const Iterations, KeyLength: Integer): TBytes; 28 | var 29 | HashVersion : THashSHA2.TSHA2Version; 30 | Hash : THashSHA2; 31 | I,J,L,Block, 32 | BytesDone, 33 | BytesLeft, 34 | BytesToCopy, 35 | HashSize : integer; 36 | SaltAndBlock,F,U : TBytes; 37 | begin 38 | HashVersion := THashSHA2.TSHA2Version.SHA256; 39 | 40 | Hash := THashSHA2.Create(HashVersion); { This is a record so no need to free } 41 | HashSize := Hash.GetHashSize; 42 | 43 | if Length(Password) > Hash.GetBlockSize then begin 44 | { Pre-hash password so THashSHA2.GetHMACAsBytes wont do this over and over again } 45 | Hash.Update(Password); 46 | Password := Hash.HashAsBytes; 47 | end; 48 | 49 | SetLength(Result, KeyLength); 50 | BytesDone := 0; 51 | 52 | L := Ceil(KeyLength / HashSize); 53 | 54 | for Block := 1 to L do begin 55 | SaltAndBlock := Salt + [Byte(Block shr 24), Byte(Block shr 16), Byte(Block shr 8), Byte(Block)]; 56 | U := THashSHA2.GetHMACAsBytes(SaltAndBlock, Password, HashVersion); 57 | F := U; 58 | 59 | for I := 2 to Iterations do begin 60 | U := THashSHA2.GetHMACAsBytes(U, Password, HashVersion); 61 | for J := 0 to High(F) do 62 | F[J] := F[J] xor U[J]; 63 | end; 64 | 65 | BytesLeft := KeyLength - BytesDone; 66 | BytesToCopy := Min(BytesLeft, Length(F)); 67 | Move(F[0], Result[BytesDone], BytesToCopy); 68 | Inc(BytesDone, BytesToCopy); 69 | end; 70 | end; 71 | 72 | function PBKDF2SHA256(const Password: String; const Salt: TBytes; const Iterations, KeyLength: Integer): TBytes; 73 | 74 | function StringToBytes(const S: String): TBytes; 75 | var 76 | N : integer; 77 | begin 78 | N := Length(S)*SizeOf(S[1]); 79 | SetLength(Result, N); 80 | if N > 0 then 81 | Move(S[1], Result[0], N); 82 | end; 83 | 84 | begin 85 | Result := PBKDF2SHA256(StringToBytes(Password), Salt, Iterations, KeyLength); 86 | end; 87 | 88 | {.$DEFINE TEST} 89 | 90 | {$IFDEF TEST} 91 | 92 | {$C+} 93 | 94 | procedure TestPBKDF2SHA256; 95 | var 96 | Password,Salt : TBytes; 97 | 98 | function AnsiStringToBytes(const S: AnsiString): TBytes; 99 | var 100 | N : integer; 101 | begin 102 | N := Length(S)*SizeOf(S[1]); 103 | SetLength(Result, N); 104 | if N > 0 then 105 | Move(S[1], Result[0], N); 106 | end; 107 | 108 | procedure Test(const Key1, Key2: TBytes); 109 | var 110 | I : integer; 111 | begin 112 | Assert(Length(Key1) = Length(Key2)); 113 | for I := 0 to High(Key1) do 114 | Assert(Key1[I] = Key2[I]); 115 | end; 116 | 117 | begin 118 | //https://stackoverflow.com/a/5136918/301485 119 | Password := AnsiStringToBytes('password'); 120 | Salt := AnsiStringToBytes('salt'); 121 | Test(PBKDF2SHA256(Password, Salt, 1, 32), 122 | [$12, $0f, $b6, $cf, $fc, $f8, $b3, $2c, $43, $e7, $22, $52, $56, $c4, $f8, $37, $a8, $65, $48, $c9, $2c, $cc, $35, $48, $08, $05, $98, $7c, $b7, $0b, $e1, $7b]); 123 | Test(PBKDF2SHA256(Password, Salt, 4096, 32), 124 | [$c5, $e4, $78, $d5, $92, $88, $c8, $41, $aa, $53, $0d, $b6, $84, $5c, $4c, $8d, $96, $28, $93, $a0, $01, $ce, $4e, $11, $a4, $96, $38, $73, $aa, $98, $13, $4a]); 125 | 126 | Password := AnsiStringToBytes('passwordPASSWORDpassword'); 127 | Salt := AnsiStringToBytes('saltSALTsaltSALTsaltSALTsaltSALTsalt'); 128 | Test(PBKDF2SHA256(Password, Salt, 4096, 40), 129 | [$34, $8c, $89, $db, $cb, $d3, $2b, $2f, $32, $d8, $14, $b8, $11, $6e, $84, $cf, $2b, $17, $34, $7e, $bc, $18, $00, $18, $1c, $4e, $2a, $1f, $b8, $dd, $53, $e1, $c6, $35, $51, $8c, $7d, $ac, $47, $e9]); 130 | 131 | Password := AnsiStringToBytes('pass'#0'word'); 132 | Salt := AnsiStringToBytes('sa'#0'lt'); 133 | Test(PBKDF2SHA256(Password, Salt, 4096, 16), 134 | [$89, $b6, $9d, $05, $16, $f8, $29, $89, $3c, $69, $62, $26, $65, $0a, $86, $87]); 135 | 136 | //https://en.wikipedia.org/wiki/PBKDF2 - but with SHA256 instead of SHA1 - first tested using SHA1 137 | Password := AnsiStringToBytes('plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd'); 138 | Salt := [$a0, $09, $c1, $a4, $85, $91, $2c, $6a, $e6, $30, $d3, $e7, $44, $24, $0b, $04]; 139 | Test(PBKDF2SHA256(Password, Salt, 1000, 16), 140 | [$28, $86, $9b, $5f, $31, $ae, $29, $23, $6f, $16, $4c, $5c, $b3, $3e, $2e, $3b]); 141 | end; 142 | 143 | initialization 144 | TestPBKDF2SHA256; 145 | 146 | {$ENDIF} 147 | 148 | end. -------------------------------------------------------------------------------- /innounp-2/sources/SHA256.pas: -------------------------------------------------------------------------------- 1 | unit SHA256; 2 | 3 | { 4 | SHA256.pas: System.Hash.pas wrapper in the style of MD5.pas and SHA1.pas 5 | Author: Martijn Laan 6 | License for SHA256.pas: Public domain, no copyright claimed 7 | } 8 | 9 | interface 10 | 11 | uses 12 | System.Hash, System.SysUtils; 13 | 14 | type 15 | TSHA256Context = record 16 | hash: THashSHA2; 17 | end; 18 | TSHA256Digest = array[0..31] of Byte; 19 | 20 | procedure SHA256Init(var ctx: TSHA256Context); 21 | procedure SHA256Update(var ctx: TSHA256Context; const buffer; len: Cardinal); 22 | function SHA256Final(var ctx: TSHA256Context): TSHA256Digest; 23 | 24 | function SHA256Buf(const Buffer; Len: Cardinal): TSHA256Digest; 25 | function SHA256DigestsEqual(const A, B: TSHA256Digest): Boolean; 26 | function SHA256DigestToString(const D: TSHA256Digest): String; 27 | 28 | implementation 29 | 30 | procedure SHA256Init(var ctx: TSHA256Context); 31 | begin 32 | ctx.hash := THashSHA2.Create(THashSHA2.TSHA2Version.SHA256); 33 | end; 34 | 35 | procedure SHA256Update(var ctx: TSHA256Context; const buffer; len: Cardinal); 36 | begin 37 | ctx.hash.Update(buffer, len); 38 | end; 39 | 40 | function SHA256Final(var ctx: TSHA256Context): TSHA256Digest; 41 | var 42 | HashAsBytes : TBytes; 43 | begin 44 | HashAsBytes := ctx.hash.HashAsBytes; 45 | Move(HashAsBytes[0], Result[0], SizeOf(Result)); 46 | end; 47 | 48 | function SHA256Buf(const Buffer; Len: Cardinal): TSHA256Digest; 49 | var 50 | Context: TSHA256Context; 51 | begin 52 | SHA256Init(Context); 53 | SHA256Update(Context, Buffer, Len); 54 | Result := SHA256Final(Context); 55 | end; 56 | 57 | function SHA256DigestsEqual(const A, B: TSHA256Digest): Boolean; 58 | var 59 | I: Integer; 60 | begin 61 | for I := Low(TSHA256Digest) to High(TSHA256Digest) do 62 | if A[I] <> B[I] then begin 63 | Result := False; 64 | Exit; 65 | end; 66 | Result := True; 67 | end; 68 | 69 | function SHA256DigestToString(const D: TSHA256Digest): String; 70 | const 71 | Digits: array[0..15] of Char = '0123456789abcdef'; 72 | var 73 | Buf: array[0..63] of Char; 74 | P: PChar; 75 | I: Integer; 76 | begin 77 | P := @Buf; 78 | for I := 0 to 31 do begin 79 | P^ := Digits[D[I] shr 4]; 80 | Inc(P); 81 | P^ := Digits[D[I] and 15]; 82 | Inc(P); 83 | end; 84 | SetString(Result, Buf, 64); 85 | end; 86 | 87 | end. 88 | -------------------------------------------------------------------------------- /innounp-2/sources/SetupEnt.pas: -------------------------------------------------------------------------------- 1 | unit SetupEnt; 2 | 3 | { 4 | Inno Setup 5 | Copyright (C) 1997-2004 Jordan Russell 6 | Portions by Martijn Laan 7 | For conditions of distribution and use, see LICENSE.TXT. 8 | 9 | Functions for handling records with embedded long strings 10 | 11 | $jrsoftware: issrc/Projects/SetupEnt.pas,v 1.6 2009/05/27 10:03:49 mlaan Exp $ 12 | } 13 | 14 | interface 15 | 16 | uses 17 | Compress; 18 | 19 | procedure SECompressedBlockRead(const R: TAbstractBlockReader; var Buf; 20 | const Count: Cardinal; const NumWideStrings, NumAnsiStrings: Integer); 21 | procedure SECompressedBlockSkip(const R: TAbstractBlockReader; 22 | const Count: Cardinal; const NumWideStrings, NumAnsiStrings: Integer); 23 | 24 | implementation 25 | 26 | uses Main; 27 | 28 | procedure SECompressedBlockRead(const R: TAbstractBlockReader; var Buf; 29 | const Count: Cardinal; const NumWideStrings, NumAnsiStrings: Integer); 30 | var 31 | P: Pointer; 32 | I: Integer; 33 | Len: Integer; 34 | S: WideString; 35 | AnsiS: AnsiString; 36 | begin 37 | P := @Buf; 38 | for I := 1 to NumWideStrings do begin 39 | R.Read(Len, SizeOf(Len)); 40 | SetLength(S, Len div SizeOf(WideChar)); 41 | if Len > 0 then R.Read(S[1], Len); 42 | if Ver>=6000 then String(P^) := S 43 | else WideString(P^) := S; 44 | Inc(Cardinal(P), SizeOf(Pointer)); 45 | end; 46 | for I := 1 to NumAnsiStrings do begin 47 | R.Read(Len, SizeOf(Len)); 48 | SetLength(AnsiS, Len); 49 | if Len > 0 then R.Read(AnsiS[1], Len); 50 | AnsiString(P^) := AnsiS; 51 | Inc(Cardinal(P), SizeOf(Pointer)); 52 | end; 53 | R.Read(P^,Count - (Cardinal(NumWideStrings + NumAnsiStrings) * SizeOf(Pointer))); 54 | end; 55 | 56 | procedure SECompressedBlockSkip(const R: TAbstractBlockReader; 57 | const Count: Cardinal; const NumWideStrings, NumAnsiStrings: Integer); 58 | var 59 | // P: Pointer; 60 | I: Integer; 61 | Len: Integer; 62 | S: WideString; 63 | AnsiS: AnsiString; 64 | begin 65 | // P := @Buf; 66 | for I := 1 to NumWideStrings do begin 67 | R.Read(Len, SizeOf(Len)); 68 | SetLength(S, Len div SizeOf(WideChar)); 69 | if Len > 0 then 70 | R.Read(S[1], Len); 71 | // String(P^) := S; 72 | // Inc(Cardinal(P), SizeOf(Pointer)); 73 | end; 74 | for I := 1 to NumAnsiStrings do begin 75 | R.Read(Len, SizeOf(Len)); 76 | SetLength(AnsiS, Len); 77 | if Len > 0 then 78 | R.Read(AnsiS[1], Len); 79 | // AnsiString(P^) := AnsiS; 80 | // Inc(Cardinal(P), SizeOf(Pointer)); 81 | end; 82 | R.Skip(Count - (Cardinal(NumWideStrings + NumAnsiStrings) * SizeOf(Pointer))); 83 | end; 84 | 85 | end. 86 | -------------------------------------------------------------------------------- /innounp-2/sources/Struct.pas: -------------------------------------------------------------------------------- 1 | unit Struct; 2 | 3 | //////// only version-independent types and constants 4 | //////// a separate file is used to keep version-specific definitions off the project namespace 5 | 6 | interface 7 | 8 | uses Winapi.Windows, MyTypes; 9 | 10 | type 11 | TSetupLdrOffsetTable = TMySetupLdrOffsetTable; 12 | PSetupLdrOffsetTable = ^TSetupLdrOffsetTable; 13 | TSetupHeader = TMySetupHeader; 14 | PSetupHeader = ^TSetupHeader; 15 | TSetupFileEntry = TMySetupFileEntry; 16 | PSetupFileEntry = ^TSetupFileEntry; 17 | TSetupFileLocationEntry = TMySetupFileLocationEntry; 18 | PSetupFileLocationEntry = ^TSetupFileLocationEntry; 19 | TSetupRegistryEntry = TMySetupRegistryEntry; 20 | PSetupRegistryEntry = ^TSetupRegistryEntry; 21 | TSetupRunEntry = TMySetupRunEntry; 22 | PSetupRunEntry = ^TSetupRunEntry; 23 | TSetupIconEntry = TMySetupIconEntry; 24 | PSetupIconEntry = ^TSetupIconEntry; 25 | TSetupTaskEntry = TMySetupTaskEntry; 26 | PSetupTaskEntry = ^TSetupTaskEntry; 27 | TSetupComponentEntry = TMySetupComponentEntry; 28 | PSetupComponentEntry = ^TSetupComponentEntry; 29 | TSetupTypeEntry = TMySetupTypeEntry; 30 | PSetupTypeEntry = ^TMySetupTypeEntry; 31 | TSetupCustomMessageEntry = TMySetupCustomMessageEntry; 32 | PSetupCustomMessageEntry = ^TSetupCustomMessageEntry; 33 | TSetupLanguageEntry = TMySetupLanguageEntry; 34 | PSetupLanguageEntry = ^TMySetupLanguageEntry; 35 | TSetupDirEntry = TMySetupDirEntry; 36 | PSetupDirEntry = ^TMySetupDirEntry; 37 | TSetupIniEntry = TMySetupIniEntry; 38 | PSetupIniEntry = ^TMySetupIniEntry; 39 | TSetupDeleteEntry = TMySetupDeleteEntry; 40 | PSetupDeleteEntry = ^TMySetupDeleteEntry; 41 | 42 | TSetupFileOption = TMySetupFileOption; 43 | TSetupFileLocationSign = TMySetupFileLocationSign; 44 | TSetupRegistryOption = TMySetupRegistryOption; 45 | TSetupDirOption = TMySetupDirOption; 46 | TSetupIniOption = TMySetupIniOption; 47 | TSetupRunOption = TMySetupRunOption; 48 | TSetupFileLocationFlag = TMySetupFileLocationFlag; 49 | 50 | TSetupProcessorArchitecture = TMySetupProcessorArchitecture; 51 | TSetupProcessorArchitectures = TMySetupProcessorArchitectures; 52 | TSetupDeleteType = TMySetupDeleteType; 53 | 54 | 55 | TSetupID = array[0..63] of AnsiChar; 56 | TCompID = array[1..4] of AnsiChar; 57 | TDiskSliceID = array[1..8] of AnsiChar; 58 | const 59 | { SetupID is used by the Setup program to check if the SETUP.0 file is 60 | compatible with with it. If you make any modifications to the records in 61 | this file it's recommended you change SetupID. Any change will do (like 62 | changing the letters or numbers), as long as your format is 63 | unrecognizable by the standard Inno Setup. } 64 | // SetupID: TSetupID = 'Inno Setup Setup Data (4.1.5)'; 65 | ZLIBID: TCompID = 'zlb'#26; 66 | DiskSliceID: TDiskSliceID = 'idska32'#26; 67 | type 68 | TSetupVersionDataVersion = packed record 69 | Build: Word; 70 | Minor, Major: Byte; 71 | end; 72 | 73 | TSetupVersionData = packed record 74 | WinVersion, NTVersion: Cardinal; 75 | NTServicePack: Word; 76 | end; 77 | 78 | { A TDiskSliceHeader record follows DiskSliceID in a SETUP-*.BIN file } 79 | TDiskSliceHeader = packed record 80 | TotalSize: Cardinal; 81 | end; 82 | 83 | { A TMessageHeader record follows MessagesHdrID in a SETUP.MSG file } 84 | TMessagesHeader = packed record 85 | NumMessages: Cardinal; 86 | TotalSize: Cardinal; 87 | NotTotalSize: Cardinal; 88 | CRCMessages: Longint; 89 | end; 90 | 91 | { TGrantPermissionEntry is stored inside string fields named 'Permissions' } 92 | TGrantPermissionSid = record 93 | Authority: TSIDIdentifierAuthority; 94 | SubAuthCount: Byte; 95 | SubAuth: array[0..1] of DWORD; 96 | end; 97 | TGrantPermissionEntry = record 98 | Sid: TGrantPermissionSid; 99 | AccessMask: DWORD; 100 | end; 101 | 102 | TSetupLdrExeHeader = packed record 103 | ID: Longint; 104 | OffsetTableOffset, NotOffsetTableOffset: Longint; 105 | end; 106 | 107 | TSetupLdrOffsetTable4010 = packed record // valid since v4.0.10 108 | ID: array[1..12] of AnsiChar; 109 | TotalSize, 110 | OffsetEXE, CompressedSizeEXE, UncompressedSizeEXE, CRCEXE, 111 | Offset0, Offset1: Longint; 112 | TableCRC: Longint; { CRC of all prior fields in this record } 113 | end; 114 | 115 | const 116 | SetupLdrExeHeaderOffset = $30; 117 | SetupLdrExeHeaderID = $6F6E6E49; 118 | SetupLdrOffsetTableResID = 11111; 119 | 120 | implementation 121 | 122 | end. 123 | -------------------------------------------------------------------------------- /innounp-2/sources/StructJoin.pas: -------------------------------------------------------------------------------- 1 | unit StructJoin; 2 | interface 3 | uses 4 | {$I StructList.inc} 5 | ; 6 | 7 | implementation 8 | end. -------------------------------------------------------------------------------- /innounp-2/sources/StructList: -------------------------------------------------------------------------------- 1 | 1321 2 | 1325 3 | 2007 4 | 2008 5 | 2011 6 | 2017 7 | 2018 8 | 3000 9 | 3001 10 | 3002 11 | 3003 12 | 3004 13 | 3005 14 | 3006 15 | 3007 16 | 3008 17 | 4000 18 | 4001 19 | 4002 20 | 4003 21 | 4004 22 | 4005 23 | 4006 24 | 4007 25 | 4008 26 | 4009 27 | 4010 28 | 4011 29 | 4100 30 | 4101 31 | 4102 32 | 4103 33 | 4104 34 | 4105 35 | 4106 36 | 4107 37 | 4108 38 | 4200 39 | 4201 40 | 4202 41 | 4203 42 | 4204 43 | 4205 44 | 4206 45 | 4207 46 | 5000 47 | 5001 48 | 5002 49 | 5003 50 | 5004 51 | 5100 52 | 5102 53 | 5105 54 | 5107 55 | 5110 56 | 5113 57 | 5200 58 | 5201 59 | 5203 60 | 5205 61 | 5205 u 62 | 5300 63 | 5300 u 64 | 5303 65 | 5303 u 66 | 5305 67 | 5305 u 68 | 5306 69 | 5306 u 70 | 5307 71 | 5307 u 72 | 5308 73 | 5308 u 74 | 5309 75 | 5309 u 76 | 5310 77 | 5310 u 78 | 5402 79 | 5402 u 80 | 5402 ur 81 | 5403 82 | 5500 83 | 5500 r 84 | 5500 u 85 | 5500 ur 86 | 5506 87 | 5506 u 88 | 5507 89 | 5507 u 90 | 5601 91 | 5601 u 92 | 6000 u 93 | 6100 u 94 | 6210 u 95 | 6300 u 96 | 6400 u 97 | 6402 u 98 | 6403 u 99 | 100 | -------------------------------------------------------------------------------- /innounp-2/sources/Version.inc: -------------------------------------------------------------------------------- 1 | { 2 | Inno Setup 3 | Copyright (C) 1997-2019 Jordan Russell 4 | Portions by Martijn Laan 5 | For conditions of distribution and use, see LICENSE.TXT. 6 | } 7 | 8 | { Determine Delphi/C++Builder version } 9 | {$IFNDEF VER90} { if it's not Delphi 2.0 } 10 | {$IFNDEF VER93} { and it's not C++Builder 1.0 } 11 | {$DEFINE IS_D3} { then it must be at least Delphi 3 or C++Builder 3 } 12 | {$DEFINE Delphi3orHigher} 13 | {$IFNDEF VER100} { if it's not Delphi 3.0 } 14 | {$IFNDEF VER110} { and it's not C++Builder 3.0 } 15 | {$DEFINE IS_D4} { then it must be at least Delphi 4 or C++Builder 4 } 16 | {$IFNDEF VER120} {$IFNDEF VER125} { if it's not Delphi 4 or C++Builder 4 } 17 | {$DEFINE IS_D5} { then it must be at least Delphi 5 or C++Builder 5 } 18 | {$IFNDEF VER130} { if it's not Delphi 5 or C++Builder 5 } 19 | {$DEFINE IS_D6} { then it must be at least Delphi 6 or C++Builder 6 } 20 | {$IFNDEF VER140} { if it's not Delphi 6 or C++Builder 6 } 21 | {$DEFINE IS_D7} { then it must be at least Delphi 7 } 22 | {$IFNDEF VER150} { if it's not Delphi 7 } 23 | {$DEFINE IS_D8} { then it must be at least Delphi 8 } 24 | {$IFNDEF VER160} { if it's not Delphi 8 } 25 | {$DEFINE IS_D9} { then it must be at least Delphi 9 (2005) } 26 | {$IFNDEF VER170} { if it's not Delphi 9 (2005) } 27 | {$DEFINE IS_D10} { then it must be at least Delphi 10 (2006) } 28 | { Delphi 11 (2007) is an odd case: it defines VER180 and VER185 on Win32, and VER190 on .NET } 29 | {$IFDEF VER185} { if it's Win32 Delphi 11 (2007) exactly } 30 | {$DEFINE IS_D11} { then it must be at least Delphi 11 (2007) } 31 | {$ENDIF} 32 | {$IFNDEF VER180} { if it's neither Delphi 10 (2006) nor Win32 Delphi 11 (2007) } 33 | {$DEFINE IS_D11} { then it must be at least Delphi 11 (2007) } 34 | {$IFNDEF VER190} { if it's not .NET Delphi 11 (2007) } 35 | {$DEFINE IS_D12} { then it must be at least Delphi 12 (2009) } 36 | {$IFNDEF VER200} { if it's not Delphi 12 (2009) } 37 | {$DEFINE IS_D14} { then it must be at least Delphi 14 (2010) } 38 | {$IFNDEF VER210} { if it's not Delphi 14 (2010) } 39 | {$DEFINE IS_DXE} { then it must be at least Delphi XE } 40 | {$IFNDEF VER220} { if it's not Delphi XE } 41 | {$DEFINE IS_DXE2} { then it must be at least Delphi XE2 } 42 | {$IFNDEF VER230} { if it's not Delphi XE2 } 43 | {$DEFINE IS_DXE3} { then it must be at least Delphi XE3 } 44 | {$IFNDEF VER240} { if it's not Delphi XE3 } 45 | {$DEFINE IS_DXE4} { then it must be at least Delphi XE4 } 46 | {$IFNDEF VER250} { if it's not Delphi XE4 } 47 | {$DEFINE IS_DXE5} { then it must be at least Delphi XE5 } 48 | {$IFNDEF VER260} { if it's not Delphi XE5 } 49 | {$DEFINE IS_DXE6} { then it must be at least Delphi XE6 } 50 | {$IFNDEF VER270} { if it's not Delphi XE6 } 51 | {$DEFINE IS_DXE7} { then it must be at least Delphi XE7 } 52 | {$IFNDEF VER280} { if it's not Delphi XE7 } 53 | {$DEFINE IS_DXE8} { then it must be at least Delphi XE8 } 54 | {$IFNDEF VER290} { if it's not Delphi XE8 } 55 | {$DEFINE IS_D10SEATTLE} { then it must be at least Delphi 10 Seattle } 56 | {$IFNDEF VER300} { if it's not Delphi 10 Seattle } 57 | {$DEFINE IS_D101BERLIN} { then it must be at least Delphi 10.1 Berlin } 58 | {$IFNDEF VER310} { if it's not Delphi 10.1 Berlin } 59 | {$DEFINE IS_D102TOKYO} { then it must be at least Delphi 10.2 Tokyo } 60 | {$IFNDEF VER320} { if it's not Delphi 10.2 Tokyo } 61 | {$DEFINE IS_D103RIO} { then it must be at least Delphi 10.3 Rio } 62 | {$ENDIF} 63 | {$ENDIF} 64 | {$ENDIF} 65 | {$ENDIF} 66 | {$ENDIF} 67 | {$ENDIF} 68 | {$ENDIF} 69 | {$ENDIF} 70 | {$ENDIF} 71 | {$ENDIF} 72 | {$ENDIF} 73 | {$ENDIF} 74 | {$ENDIF} 75 | {$ENDIF} 76 | {$ENDIF} 77 | {$ENDIF} 78 | {$ENDIF} 79 | {$ENDIF} 80 | {$ENDIF} 81 | {$ENDIF} 82 | {$ENDIF} {$ENDIF} 83 | {$ENDIF} 84 | {$ENDIF} 85 | {$ENDIF} 86 | {$ENDIF} 87 | 88 | {$IFNDEF IS_ALLOWD7} 89 | { Check for Delphi 7 and its WideString bug } 90 | {$IFDEF IS_D6} 91 | {$IF Trunc(RTLVersion) = 15} 92 | { Delphi 7's WideString type is fundamentally flawed and should not be 93 | used; see QC #8565. If possible, you should compile with another version 94 | of Delphi (< 7 or 9). 95 | The bug is that it handles ANSI->Wide and Wide->ANSI conversions 96 | incorrectly; it uses the thread code page (CP_THREAD_ACP) instead of the 97 | system code page (CP_ACP). This is wrong because all of the "A" Windows 98 | APIs expect strings to use the system code page. 99 | In Inno Setup, this can result in shortcuts being created with incorrect 100 | names, since it converts ANSI->Wide when calling IPersistFile::Save. 101 | If you *really* want to compile under Delphi 7, you can remove this 102 | check. But expect breakage. } 103 | {$MESSAGE ERROR 'Delphi 7''s WideString type is broken. See comments in source code.'} 104 | {$IFEND} 105 | {$ENDIF} 106 | {$ENDIF} 107 | 108 | { Check for Delphi 2007 and its "Halt in except block" bug } 109 | {$IFDEF VER185} 110 | { On Delphi 2007, if Halt is called inside an 'except' or 'finally' block, the 111 | current exception's message is forcibly displayed on the screen (even if 112 | it's an EAbort exception), and the process returns with an exit code of 1 113 | instead of the exit code specified in the Halt call. See QC #51427. 114 | There are many places in Inno Setup that are affected by this issue (see 115 | the Halt calls in Setup.dpr for example). } 116 | {$MESSAGE ERROR 'Delphi 2007''s Halt is broken. See comments in source code.'} 117 | {$ENDIF} 118 | -------------------------------------------------------------------------------- /innounp-2/sources/VersionInfo.inc: -------------------------------------------------------------------------------- 1 | IUV_MAJOR=2; 2 | IUV_MINOR=64; 3 | IUV_RELEASE=4; 4 | 5 | -------------------------------------------------------------------------------- /innounp-2/sources/a.bat: -------------------------------------------------------------------------------- 1 | echo.|time 2 | INNOUNP.exe -v -m setup.exe 3 | echo.|time 4 | -------------------------------------------------------------------------------- /innounp-2/sources/bin.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | if -%1==- goto usage 3 | rem goto skipopt 4 | 5 | set DCC_BIN=dcc32 6 | 7 | rem Optimization: reduce exe size 8 | del *.dcu 9 | ren innounp.cfg innounp.cfg.ren 10 | call %DCC_BIN% innounp.dpr 11 | ren innounp.cfg.ren innounp.cfg 12 | if not exist StripReloc.exe call %DCC_BIN% StripReloc.dpr 13 | StripReloc /b innounp.exe 14 | rem End of optimization 15 | goto pack 16 | 17 | :skipopt 18 | call %DCC_BIN% innounp.dpr 19 | 20 | :pack 21 | if not exist release md release 22 | if exist release\%1.rar del release\%1.rar 23 | rar a -m5 release\%1.rar innounp.exe innounp.htm 24 | goto end 25 | 26 | :usage 27 | echo Makes a binary release (output is in release\release-name.rar) 28 | echo Assumes 'dcc somefile.dpr' can be used to compile sources 29 | echo Usage: bin release-name 30 | 31 | set DCC_BIN= 32 | :end 33 | -------------------------------------------------------------------------------- /innounp-2/sources/bzip/bzlib.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-2/sources/bzip/bzlib.obj -------------------------------------------------------------------------------- /innounp-2/sources/bzip/crctable.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-2/sources/bzip/crctable.obj -------------------------------------------------------------------------------- /innounp-2/sources/bzip/decompress.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-2/sources/bzip/decompress.obj -------------------------------------------------------------------------------- /innounp-2/sources/bzip/huffman.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-2/sources/bzip/huffman.obj -------------------------------------------------------------------------------- /innounp-2/sources/bzip/randtable.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-2/sources/bzip/randtable.obj -------------------------------------------------------------------------------- /innounp-2/sources/clean.bat: -------------------------------------------------------------------------------- 1 | del *.tmp 2 | del *.~* 3 | del *.dcu 4 | del StructVer??????.pas 5 | del CompressVer????.pas 6 | del StructList.inc 7 | del CompressList.inc 8 | del version.res 9 | @rem del StripReloc.exe 10 | @rem del innounp.exe 11 | -------------------------------------------------------------------------------- /innounp-2/sources/crypt/ISCrypt.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-2/sources/crypt/ISCrypt.obj -------------------------------------------------------------------------------- /innounp-2/sources/empty.pas: -------------------------------------------------------------------------------- 1 | unit empty; 2 | interface 3 | implementation 4 | end. -------------------------------------------------------------------------------- /innounp-2/sources/innounp_Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-2/sources/innounp_Icon.ico -------------------------------------------------------------------------------- /innounp-2/sources/licenses/InnoSetup.txt: -------------------------------------------------------------------------------- 1 | Inno Setup License 2 | ================== 3 | 4 | Except where otherwise noted, all of the documentation and software included 5 | in the Inno Setup package is copyrighted by Jordan Russell. 6 | 7 | Copyright (C) 1997-2010 Jordan Russell. All rights reserved. 8 | Portions Copyright (C) 2000-2010 Martijn Laan. All rights reserved. 9 | 10 | This software is provided "as-is," without any express or implied warranty. 11 | In no event shall the author be held liable for any damages arising from the 12 | use of this software. 13 | 14 | Permission is granted to anyone to use this software for any purpose, 15 | including commercial applications, and to alter and redistribute it, 16 | provided that the following conditions are met: 17 | 18 | 1. All redistributions of source code files must retain all copyright 19 | notices that are currently in place, and this list of conditions without 20 | modification. 21 | 22 | 2. All redistributions in binary form must retain all occurrences of the 23 | above copyright notice and web site addresses that are currently in 24 | place (for example, in the About boxes). 25 | 26 | 3. The origin of this software must not be misrepresented; you must not 27 | claim that you wrote the original software. If you use this software to 28 | distribute a product, an acknowledgment in the product documentation 29 | would be appreciated but is not required. 30 | 31 | 4. Modified versions in source or binary form must be plainly marked as 32 | such, and must not be misrepresented as being the original software. 33 | 34 | 35 | Jordan Russell 36 | jr-2008 AT jrsoftware.org 37 | http://www.jrsoftware.org/ 38 | -------------------------------------------------------------------------------- /innounp-2/sources/licenses/bzip2.txt: -------------------------------------------------------------------------------- 1 | 2 | This program, "bzip2", the associated library "libbzip2", and all 3 | documentation, are copyright (C) 1996-2005 Julian R Seward. All 4 | rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions 8 | are met: 9 | 10 | 1. Redistributions of source code must retain the above copyright 11 | notice, this list of conditions and the following disclaimer. 12 | 13 | 2. The origin of this software must not be misrepresented; you must 14 | not claim that you wrote the original software. If you use this 15 | software in a product, an acknowledgment in the product 16 | documentation would be appreciated but is not required. 17 | 18 | 3. Altered source versions must be plainly marked as such, and must 19 | not be misrepresented as being the original software. 20 | 21 | 4. The name of the author may not be used to endorse or promote 22 | products derived from this software without specific prior written 23 | permission. 24 | 25 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS 26 | OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 27 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 28 | ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 29 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 30 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 31 | GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 32 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 33 | WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 34 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 35 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36 | 37 | Julian Seward, Cambridge, UK. 38 | jseward@acm.org 39 | bzip2/libbzip2 version 1.0.3 of 15 February 2005 40 | 41 | -------------------------------------------------------------------------------- /innounp-2/sources/licenses/zlib.txt: -------------------------------------------------------------------------------- 1 | ZLIB DATA COMPRESSION LIBRARY 2 | 3 | (C) 1995-2004 Jean-loup Gailly and Mark Adler 4 | 5 | This software is provided 'as-is', without any express or implied 6 | warranty. In no event will the authors be held liable for any damages 7 | arising from the use of this software. 8 | 9 | Permission is granted to anyone to use this software for any purpose, 10 | including commercial applications, and to alter it and redistribute it 11 | freely, subject to the following restrictions: 12 | 13 | 1. The origin of this software must not be misrepresented; you must not 14 | claim that you wrote the original software. If you use this software 15 | in a product, an acknowledgment in the product documentation would be 16 | appreciated but is not required. 17 | 2. Altered source versions must be plainly marked as such, and must not be 18 | misrepresented as being the original software. 19 | 3. This notice may not be removed or altered from any source distribution. 20 | 21 | Jean-loup Gailly Mark Adler 22 | jloup@gzip.org madler@alumni.caltech.edu 23 | 24 | If you use the zlib library in a product, we would appreciate *not* 25 | receiving lengthy legal documents to sign. The sources are provided 26 | for free but without warranty of any kind. The library has been 27 | entirely written by Jean-loup Gailly and Mark Adler; it does not 28 | include third-party code. 29 | 30 | If you redistribute modified sources, we would appreciate that you include 31 | in the file ChangeLog history information documenting your changes. Please 32 | read the FAQ for more information on the distribution of modified source 33 | versions. 34 | -------------------------------------------------------------------------------- /innounp-2/sources/prep.bat: -------------------------------------------------------------------------------- 1 | @echo Prepare before build. Expand the templates 2 | @echo Run this before first compile 3 | @echo Needs Win2K+ 4 | del StructList.inc 5 | del CompressList.inc 6 | del StructVer??????.pas 7 | del CompressVer????.pas 8 | for /f "tokens=1,2" %%a in (StructList) do ( 9 | replace DEFVER %%a _EXTSUF_ "%%b" StructVer%%a%%b.pas 10 | echo StructVer%%a%%b,>> StructList.inc 11 | ) 12 | echo empty>>StructList.inc 13 | for /f %%a in (CompressList) do ( 14 | replace DEFVER %%a CompressVer%%a.pas 15 | echo CompressVer%%a,>> CompressList.inc 16 | ) 17 | echo empty>>CompressList.inc 18 | 19 | @rem Prepare version information 20 | copy version.rc.in version.rc > nul 21 | for /f "tokens=1,2 delims==;" %%a in (VersionInfo.inc) do ( 22 | replace %%a %%b -- version.rc 23 | ) 24 | brcc32 -foversion.res version.rc > nul 25 | del version.rc > nul 26 | -------------------------------------------------------------------------------- /innounp-2/sources/prepver.bat: -------------------------------------------------------------------------------- 1 | @rem Prepare version information 2 | copy version.rc.in version.rc > nul 3 | for /f "tokens=1,2 delims==;" %%a in (VersionInfo.inc) do ( 4 | replace %%a %%b -- version.rc 5 | ) 6 | brcc32 -foversion.res version.rc > nul 7 | del version.rc > nul 8 | -------------------------------------------------------------------------------- /innounp-2/sources/res.bat: -------------------------------------------------------------------------------- 1 | @rem Prepare version information 2 | copy version.rc.in version.rc > nul 3 | for /f "tokens=1,2 delims==;" %%a in (VersionInfo.inc) do ( 4 | replace %%a %%b -- version.rc 5 | ) 6 | "%ProgramFiles%\Embarcadero\Studio\17.0\bin\brcc32.exe" -foversion.res version.rc > nul 7 | rem del version.rc > nul 8 | -------------------------------------------------------------------------------- /innounp-2/sources/rls.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | if -%1==- goto usage 3 | call bin %1 4 | call src %1src 5 | rem copy /b innounp.htm + count.php index.phtml 6 | copy /b innounp.htm release\index.phtml 7 | goto end 8 | 9 | :usage 10 | echo Makes a source release and a binary release 11 | echo Usage: rls release-name 12 | 13 | :end 14 | -------------------------------------------------------------------------------- /innounp-2/sources/src.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | if -%1==- goto usage 3 | if not exist release md release 4 | if exist release\%1.rar del release\%1.rar 5 | rar a -s -m5 -md1024 release\%1.rar innounp.dpr *.pas *.bat StructList CompressList VersionInfo.inc StripReloc.dpr version.inc licenses\*.* innounp.htm zlib\*.obj LzmaDecode\*.obj lzma2\Decoder\*.* bzip\*.obj crypt\*.obj replace.exe *.in innounp.manifest -xStructVer*.pas -xCompressVer????.pas 6 | goto end 7 | 8 | :usage 9 | echo Makes a source release (output is release\release-name.rar) 10 | echo Usage: src release-name 11 | 12 | :end 13 | -------------------------------------------------------------------------------- /innounp-2/sources/zlib/adler32.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-2/sources/zlib/adler32.obj -------------------------------------------------------------------------------- /innounp-2/sources/zlib/crc32.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-2/sources/zlib/crc32.obj -------------------------------------------------------------------------------- /innounp-2/sources/zlib/inffast.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-2/sources/zlib/inffast.obj -------------------------------------------------------------------------------- /innounp-2/sources/zlib/inflate.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-2/sources/zlib/inflate.obj -------------------------------------------------------------------------------- /innounp-2/sources/zlib/inftrees.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-2/sources/zlib/inftrees.obj -------------------------------------------------------------------------------- /innounp-2/sources/zlib/trees.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-2/sources/zlib/trees.obj -------------------------------------------------------------------------------- /innounp-2/sources/zlib/zutil.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/innounp-2/sources/zlib/zutil.obj -------------------------------------------------------------------------------- /languages/dialogs/de/dialogs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/dialogs/de/dialogs.mo -------------------------------------------------------------------------------- /languages/dialogs/es/dialogs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/dialogs/es/dialogs.mo -------------------------------------------------------------------------------- /languages/dialogs/fr/dialogs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/dialogs/fr/dialogs.mo -------------------------------------------------------------------------------- /languages/dialogs/hu/dialogs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/dialogs/hu/dialogs.mo -------------------------------------------------------------------------------- /languages/dialogs/it/dialogs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/dialogs/it/dialogs.mo -------------------------------------------------------------------------------- /languages/dialogs/zh/dialogs.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/dialogs/zh/dialogs.mo -------------------------------------------------------------------------------- /languages/project/de/Language.cfg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/project/de/Language.cfg -------------------------------------------------------------------------------- /languages/project/de/default.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/project/de/default.mo -------------------------------------------------------------------------------- /languages/project/default.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: PACKAGE VERSION\n" 10 | "POT-Creation-Date: 2025-01-19 13:08+0100\n" 11 | "PO-Revision-Date: 2025-01-19 13:08+0100\n" 12 | "Last-Translator: Somebody \n" 13 | "MIME-Version: 1.0\n" 14 | "Content-Type: text/plain; charset=UTF-8\n" 15 | "Content-Transfer-Encoding: 8bit\n" 16 | "X-Generator: GgtTranslate 3.3.1\n" 17 | 18 | #. MainForm.Caption 19 | #: UnpackMain.dfm:4 20 | #: UnpackMain.pas:253 21 | #: UnpackMain.pas:608 22 | msgid "Inspect and unpack InnoSetup files" 23 | msgstr "" 24 | 25 | #. MainForm.pnTop.Label2.Caption 26 | #: UnpackMain.dfm:38 27 | msgid "InnoSetup archive:" 28 | msgstr "" 29 | 30 | #. MainForm.pnTop.bbOptions.Hint 31 | #: UnpackMain.dfm:57 32 | msgid "Select unpack tool" 33 | msgstr "" 34 | 35 | #. MainForm.pnTop.bbExit.Hint 36 | #: UnpackMain.dfm:148 37 | msgid "Quit program" 38 | msgstr "" 39 | 40 | #. MainForm.pnTop.bbList.Hint 41 | #: UnpackMain.dfm:239 42 | msgid "Show list of all contained files" 43 | msgstr "" 44 | 45 | #. MainForm.pnTop.bbList.Caption 46 | #: UnpackMain.dfm:241 47 | msgid "File list" 48 | msgstr "" 49 | 50 | #. MainForm.pnTop.bbExtract.Caption 51 | #: UnpackMain.dfm:365 52 | msgid "Extract files" 53 | msgstr "" 54 | 55 | #. MainForm.pnTop.bbVerify.Caption 56 | #: UnpackMain.dfm:489 57 | msgid "Verify setup" 58 | msgstr "" 59 | 60 | #. MainForm.pnTop.bbFile.Hint 61 | #: UnpackMain.dfm:612 62 | #: UnpackMain.pas:415 63 | msgid "Select InnoSetup archive" 64 | msgstr "" 65 | 66 | #. MainForm.pnTop.cxEmbedded.Caption 67 | #: UnpackMain.dfm:737 68 | msgid "Process embedded files" 69 | msgstr "" 70 | 71 | #. MainForm.pnTop.bbInfo.Hint 72 | #: UnpackMain.dfm:746 73 | msgid "About the program" 74 | msgstr "" 75 | 76 | #. MainForm.pnTop.cxEncrypted.Caption 77 | #: UnpackMain.dfm:838 78 | msgid "InnoSetup archive is encrypted" 79 | msgstr "" 80 | 81 | #. MainForm.pnTop.edPassword.EditLabel.Caption 82 | #: UnpackMain.dfm:849 83 | msgid "Password:" 84 | msgstr "" 85 | 86 | #. MainForm.pnTop.bbVersion.Hint 87 | #: UnpackMain.dfm:859 88 | msgid "Show list of all supported Inno Setup " 89 | "versions" 90 | msgstr "" 91 | 92 | #. MainForm.pnTop.bbLang.Hint 93 | #: UnpackMain.dfm:950 94 | msgid "Show list of all supported languages" 95 | msgstr "" 96 | 97 | #. MainForm.pnTop.bbLang.Caption 98 | #: UnpackMain.dfm:952 99 | msgid "Languages" 100 | msgstr "" 101 | 102 | #. MainForm.pnTop.bbSetupInfo.Hint 103 | #: UnpackMain.dfm:1075 104 | msgid "Show general information" 105 | msgstr "" 106 | 107 | #. MainForm.pnExtract.Label1.Caption 108 | #: UnpackMain.dfm:1211 109 | msgid "Extract to directory:" 110 | msgstr "" 111 | 112 | #. MainForm.pnExtract.Label3.Caption 113 | #: UnpackMain.dfm:1218 114 | msgid "File filter:" 115 | msgstr "" 116 | 117 | #. MainForm.pnExtract.cbDir.Hint 118 | #: UnpackMain.dfm:1225 119 | msgid "Extract files to this directory" 120 | msgstr "" 121 | 122 | #. MainForm.pnExtract.bbStart.Hint 123 | #: UnpackMain.dfm:1239 124 | msgid "Start extraction" 125 | msgstr "" 126 | 127 | #. MainForm.pnExtract.bbStart.Caption 128 | #: UnpackMain.dfm:1241 129 | msgid "Extract" 130 | msgstr "" 131 | 132 | #. MainForm.pnExtract.cxDupl.Caption 133 | #: UnpackMain.dfm:1364 134 | msgid "Process duplicate files" 135 | msgstr "" 136 | 137 | #. MainForm.pnExtract.cxOverwrite.Caption 138 | #: UnpackMain.dfm:1372 139 | msgid "Overwrite files" 140 | msgstr "" 141 | 142 | #. MainForm.pnExtract.cxStrip.Caption 143 | #: UnpackMain.dfm:1380 144 | msgid "Without paths" 145 | msgstr "" 146 | 147 | #. MainForm.pnExtract.bbFilter.Hint 148 | #: UnpackMain.dfm:1398 149 | msgid "Edit file filter" 150 | msgstr "" 151 | 152 | #. MainForm.pnExtract.bbDir.Hint 153 | #: UnpackMain.dfm:1489 154 | #: UnpackMain.pas:483 155 | msgid "Select directory for extracted files" 156 | msgstr "" 157 | 158 | #. MainForm.pnExtract.bbCopyPath.Hint 159 | #: UnpackMain.dfm:1553 160 | msgid "Use directory of setup archive" 161 | msgstr "" 162 | 163 | #. MainForm.pnExtract.bbScript.Hint 164 | #: UnpackMain.dfm:1617 165 | msgid "Filter for install script" 166 | msgstr "" 167 | 168 | #. MainForm.pnBottom.pnTools.bbCopyResult.Hint 169 | #: UnpackMain.dfm:1728 170 | msgid "Copy output to clipboard" 171 | msgstr "" 172 | 173 | #. MainForm.pnBottom.pnTools.bbDown.Hint 174 | #: UnpackMain.dfm:1819 175 | msgid "Scroll down" 176 | msgstr "" 177 | 178 | #. MainForm.pnBottom.pnTools.bbUp.Hint 179 | #: UnpackMain.dfm:1910 180 | msgid "Scroll up" 181 | msgstr "" 182 | 183 | #. Programmer's name for it: rsInfo 184 | #: UnpackMain.pas:178 185 | msgid "Command line options: [] [options]\n" 186 | "\t\t\t: name of setup file to be unpacked\n" 187 | "\t/d:\t: destination directory for unpacked files\n" 188 | "\t/f:\t: file filter\n" 189 | "\t/e:\t: encryption password\n" 190 | "\t/l:\t\t: language selection (en, de, fr, it or hu)\n" 191 | "\t/m\t\t: process internal embedded files\n" 192 | "\t/s\t\t: extract files without paths\n" 193 | "\t/a\t\t: process all copies of duplicate files\n" 194 | "\t/o\t\t: overwrite files\n" 195 | "\t/p\t\t: run as portable program" 196 | msgstr "" 197 | 198 | #: UnpackMain.pas:361 199 | msgid "This application only allows dropping of exe " 200 | "files!" 201 | msgstr "" 202 | 203 | #: UnpackMain.pas:380 204 | #: UnpackMain.pas:414 205 | msgid "Programs|*.exe|All files|*.*" 206 | msgstr "" 207 | 208 | #: UnpackMain.pas:381 209 | msgid "Search for \"innounp.exe\"" 210 | msgstr "" 211 | 212 | #: UnpackMain.pas:474 213 | msgid "Filename: " 214 | msgstr "" 215 | 216 | #: UnpackMain.pas:502 217 | msgid "Extract files matching:" 218 | msgstr "" 219 | 220 | #: UnpackMain.pas:589 221 | msgid "Extract files from setup ..." 222 | msgstr "" 223 | 224 | #: UnpackMain.pas:590 225 | msgid "Destination directory: " 226 | msgstr "" 227 | 228 | #. end; 229 | #: UnpackMain.pas:740 230 | msgid "Name: " 231 | msgstr "" 232 | 233 | #: UnpackMain.pas:741 234 | msgid "Version: " 235 | msgstr "" 236 | 237 | #: UnpackMain.pas:742 238 | msgid "Copyright: " 239 | msgstr "" 240 | 241 | #: UnpackMain.pas:743 242 | msgid "Company: " 243 | msgstr "" 244 | 245 | #: UnpackMain.pas:744 246 | msgid "Comment: " 247 | msgstr "" 248 | 249 | #. wait 10 s 250 | #: UnpackMain.pas:786 251 | msgid "Timeout occured - continue anyway?" 252 | msgstr "" 253 | 254 | #. Convert Unix style output 255 | #: UnpackMain.pas:809 256 | #: UnpackMain.pas:813 257 | msgid "Error: " 258 | msgstr "" 259 | 260 | -------------------------------------------------------------------------------- /languages/project/es/default.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/project/es/default.mo -------------------------------------------------------------------------------- /languages/project/es/default.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: \n" 10 | "POT-Creation-Date: 2025-01-19 13:08+0100\n" 11 | "PO-Revision-Date: 2025-01-25 17:41+0100\n" 12 | "Last-Translator: J. Rathlev \n" 13 | "Language-Team: M.A.G. \n" 14 | "Language: es\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "X-Generator: Poedit 3.5\n" 19 | 20 | msgid "Inspect and unpack InnoSetup files" 21 | msgstr "Inspecciona y descomprime los ficheros de " 22 | "InnoSetup" 23 | 24 | msgid "InnoSetup archive:" 25 | msgstr "Archivo InnoSetup:" 26 | 27 | msgid "Select unpack tool" 28 | msgstr "Seleccionar herramienta de descompresión" 29 | 30 | msgid "Quit program" 31 | msgstr "Salir del programa" 32 | 33 | msgid "Show list of all contained files" 34 | msgstr "Mostrar la lista de todos los ficheros " 35 | "incluidos" 36 | 37 | msgid "File list" 38 | msgstr "Lista de ficheros" 39 | 40 | msgid "Extract files" 41 | msgstr "Extraer ficheros" 42 | 43 | msgid "Verify setup" 44 | msgstr "Verificar instalación" 45 | 46 | msgid "Select InnoSetup archive" 47 | msgstr "Seleccionar archivo InnoSetup" 48 | 49 | msgid "Process embedded files" 50 | msgstr "Procesar ficheros incluidos" 51 | 52 | msgid "About the program" 53 | msgstr "Acerca del programa" 54 | 55 | msgid "InnoSetup archive is encrypted" 56 | msgstr "El archivo InnoSetup está codificado" 57 | 58 | msgid "Password:" 59 | msgstr "Contraseña:" 60 | 61 | msgid "Show list of all supported Inno Setup " 62 | "versions" 63 | msgstr "Mostrar lista de todos los Inno Setup " 64 | "soportados" 65 | 66 | msgid "Show list of all supported languages" 67 | msgstr "Mostrar lista de todos los idiomas soportados" 68 | 69 | msgid "Languages" 70 | msgstr "Idiomas" 71 | 72 | msgid "Show general information" 73 | msgstr "Mostrar información general" 74 | 75 | msgid "Extract to directory:" 76 | msgstr "Extraer al directorio:" 77 | 78 | msgid "File filter:" 79 | msgstr "Filtro de ficheros:" 80 | 81 | msgid "Extract files to this directory" 82 | msgstr "Extraer ficheros a este directorio" 83 | 84 | msgid "Start extraction" 85 | msgstr "Iniciar la extracción" 86 | 87 | msgid "Extract" 88 | msgstr "Extraer" 89 | 90 | msgid "Process duplicate files" 91 | msgstr "Procesar ficheros duplicados" 92 | 93 | msgid "Overwrite files" 94 | msgstr "Sobrescribir ficheros" 95 | 96 | msgid "Without paths" 97 | msgstr "Sin rutas" 98 | 99 | msgid "Edit file filter" 100 | msgstr "Editar filtro de ficheros" 101 | 102 | msgid "Select directory for extracted files" 103 | msgstr "Seleccionar directorio para los ficheros " 104 | "extraídos" 105 | 106 | msgid "Use directory of setup archive" 107 | msgstr "Usar el directorio de instalación" 108 | 109 | msgid "Filter for install script" 110 | msgstr "Filtrar por script de instalación" 111 | 112 | msgid "Copy output to clipboard" 113 | msgstr "Copiar resultado al portapapeles" 114 | 115 | msgid "Scroll down" 116 | msgstr "Desplazarse hacia abajo" 117 | 118 | msgid "Scroll up" 119 | msgstr "Desplazarse hacia arriba" 120 | 121 | msgid "Command line options: [] [options]\n" 122 | "\t\t\t: name of setup file to be unpacked\n" 123 | "\t/d:\t: destination directory for unpacked files\n" 124 | "\t/f:\t: file filter\n" 125 | "\t/e:\t: encryption password\n" 126 | "\t/l:\t\t: language selection (en, de, fr, it or hu)\n" 127 | "\t/m\t\t: process internal embedded files\n" 128 | "\t/s\t\t: extract files without paths\n" 129 | "\t/a\t\t: process all copies of duplicate files\n" 130 | "\t/o\t\t: overwrite files\n" 131 | "\t/p\t\t: run as portable program" 132 | msgstr "Opciones de la línea de comandos: [] [opciones]\n" 133 | "\t\t\t: nombre del fichero de instalación al descomprimir\n" 134 | "\t/d:\t: directorio de destino de los ficheros descomprimidos\n" 135 | "\t/f:\t: filtro de ficheros\n" 136 | "\t/e:\t: contraseña de codificación\n" 137 | "\t/l:\t\t: selección de idioma (en, de, fr, it, es, hu)\n" 138 | "\t/m\t\t: procesar ficheros internos integrados\n" 139 | "\t/s\t\t: extraer ficheros sin rutas\n" 140 | "\t/a\t\t: procesar todas copias de ficheros duplicados\n" 141 | "\t/o\t\t: sobrescribir ficheros\n" 142 | "\t/p\t\t: ejecutar como programa portátil" 143 | 144 | msgid "This application only allows dropping of exe " 145 | "files!" 146 | msgstr "Esta aplicación sólo permite soltar " 147 | "EXEs!" 148 | 149 | msgid "Programs|*.exe|All files|*.*" 150 | msgstr "Programas|*.exe|Todos los ficheros|*.*" 151 | 152 | msgid "Search for \"innounp.exe\"" 153 | msgstr "Buscar por \"innounp.exe\"" 154 | 155 | msgid "Filename: " 156 | msgstr "Nombre de fichero: " 157 | 158 | msgid "Extract files matching:" 159 | msgstr "Extraer ficheros coincidentes:" 160 | 161 | msgid "Extract files from setup ..." 162 | msgstr "Extraer ficheros del instalador..." 163 | 164 | msgid "Destination directory: " 165 | msgstr "Directorio de destino: " 166 | 167 | msgid "Name: " 168 | msgstr "Nombre: " 169 | 170 | msgid "Version: " 171 | msgstr "Versión: " 172 | 173 | msgid "Copyright: " 174 | msgstr "Copyright: " 175 | 176 | msgid "Company: " 177 | msgstr "Compañia: " 178 | 179 | msgid "Comment: " 180 | msgstr "Comentario(s): " 181 | 182 | msgid "Timeout occured - continue anyway?" 183 | msgstr "Tiempo de espera agotado - ¿continuar?" 184 | 185 | msgid "Error: " 186 | msgstr "Error: " 187 | 188 | -------------------------------------------------------------------------------- /languages/project/es/language.cfg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/project/es/language.cfg -------------------------------------------------------------------------------- /languages/project/fr/default.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/project/fr/default.mo -------------------------------------------------------------------------------- /languages/project/fr/default.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: \n" 9 | "POT-Creation-Date: 2025-01-19 13:08+0100\n" 10 | "PO-Revision-Date: 2025-01-19 16:05+0100\n" 11 | "Last-Translator: J. Rathlev \n" 12 | "Language-Team: \n" 13 | "Language: fr\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" 18 | "X-Generator: Poedit 3.5\n" 19 | "X-Poedit-SourceCharset: UTF-8\n" 20 | 21 | msgid "Inspect and unpack InnoSetup files" 22 | msgstr "Inspecter et décompresser les fichiers InnoSetup" 23 | 24 | msgid "InnoSetup archive:" 25 | msgstr "Archives InnoSetup:" 26 | 27 | msgid "Select unpack tool" 28 | msgstr "Sélectionnez l'outil de dépaquage" 29 | 30 | msgid "Quit program" 31 | msgstr "Quitter le programme" 32 | 33 | msgid "Show list of all contained files" 34 | msgstr "Afficher la liste de tous les fichiers contenus" 35 | 36 | msgid "File list" 37 | msgstr "Liste de fichiers" 38 | 39 | msgid "Extract files" 40 | msgstr "Extraire les fichiers" 41 | 42 | msgid "Verify setup" 43 | msgstr "Vérifier la installation" 44 | 45 | msgid "Select InnoSetup archive" 46 | msgstr "Choisissez l'archive InnoSetup" 47 | 48 | msgid "Process embedded files" 49 | msgstr "Traiter les fichiers encastrés" 50 | 51 | msgid "About the program" 52 | msgstr "À propos du programme" 53 | 54 | msgid "InnoSetup archive is encrypted" 55 | msgstr "L'archive InnoSetup est cryptée" 56 | 57 | msgid "Password:" 58 | msgstr "Mot de passe :" 59 | 60 | msgid "Show list of all supported Inno Setup versions" 61 | msgstr "" 62 | "Afficher la liste de toutes les versions d'Inno Setup prises en charge" 63 | 64 | msgid "Show list of all supported languages" 65 | msgstr "Afficher la liste de toutes les langues prises en charge" 66 | 67 | msgid "Languages" 68 | msgstr "Langues" 69 | 70 | msgid "Show general information" 71 | msgstr "Afficher les informations générales" 72 | 73 | msgid "Extract to directory:" 74 | msgstr "Extraire dans le répertoire :" 75 | 76 | msgid "File filter:" 77 | msgstr "Filtre du fichier:" 78 | 79 | msgid "Extract files to this directory" 80 | msgstr "Extraire les fichiers dans ce répertoire" 81 | 82 | msgid "Start extraction" 83 | msgstr "Commencer l'extraction" 84 | 85 | msgid "Extract" 86 | msgstr "Extrait" 87 | 88 | msgid "Process duplicate files" 89 | msgstr "Traiter les fichiers en double" 90 | 91 | msgid "Overwrite files" 92 | msgstr "Écraser les fichiers" 93 | 94 | msgid "Without paths" 95 | msgstr "Sans chemins" 96 | 97 | msgid "Edit file filter" 98 | msgstr "Dialogue de filtre de fichier" 99 | 100 | msgid "Select directory for extracted files" 101 | msgstr "Sélectionnez le répertoire pour l'extraction des fichiers" 102 | 103 | msgid "Use directory of setup archive" 104 | msgstr "Utiliser le répertoire de l'archive d'installation" 105 | 106 | msgid "Filter for install script" 107 | msgstr "Filtre pour le script d'installation" 108 | 109 | msgid "Copy output to clipboard" 110 | msgstr "Copier dans le presse-papiers" 111 | 112 | msgid "Scroll down" 113 | msgstr "Défilez vers le bas" 114 | 115 | msgid "Scroll up" 116 | msgstr "Haut de page" 117 | 118 | msgid "" 119 | "Command line options: [] [options]\n" 120 | "\t\t\t: name of setup file to be unpacked\n" 121 | "\t/d:\t: destination directory for unpacked files\n" 122 | "\t/f:\t: file filter\n" 123 | "\t/e:\t: encryption password\n" 124 | "\t/l:\t\t: language selection (en, de, fr, it or hu)\n" 125 | "\t/m\t\t: process internal embedded files\n" 126 | "\t/s\t\t: extract files without paths\n" 127 | "\t/a\t\t: process all copies of duplicate files\n" 128 | "\t/o\t\t: overwrite files\n" 129 | "\t/p\t\t: run as portable program" 130 | msgstr "" 131 | "Options de la ligne de commande : [] [options]\n" 132 | "\t\t\t/d : nom du fichier d'installation à décompresser\n" 133 | "\t/d :\t: répertoire de destination des fichiers décompressés\n" 134 | "\t/f :\t: filtre de fichier\n" 135 | "\t/e :\t: mot de passe de cryptage\n" 136 | "\t/l :\t\t: sélection de la langue (en, de, fr, it ou hu)\n" 137 | "\t/m\t\t : traiter les fichiers internes incorporés\n" 138 | "\t/s \t\t: extrait les fichiers sans chemin d'accès\n" 139 | "\t/a \t\t: traiter toutes les copies de fichiers dupliqués\n" 140 | "\t/\t\to : écraser les fichiers\n" 141 | "\t/\t\tp : exécuter comme programme portable" 142 | 143 | msgid "This application only allows dropping of exe files!" 144 | msgstr "Cette application ne permet que le dépôt de fichiers exe !" 145 | 146 | msgid "Programs|*.exe|All files|*.*" 147 | msgstr "Programmes|*.exe|Tous le fichiers|*.*" 148 | 149 | msgid "Search for \"innounp.exe\"" 150 | msgstr "Recherche pour \"innounp.exe\"" 151 | 152 | msgid "Filename: " 153 | msgstr "Nom du fichier: " 154 | 155 | msgid "Extract files matching:" 156 | msgstr "Extraire les fichiers correspondants :" 157 | 158 | msgid "Extract files from setup ..." 159 | msgstr "Extraire les fichiers de l'installation ..." 160 | 161 | msgid "Destination directory: " 162 | msgstr "Répertoire de destination : " 163 | 164 | msgid "Name: " 165 | msgstr "Nom: " 166 | 167 | msgid "Version: " 168 | msgstr "Version: " 169 | 170 | msgid "Copyright: " 171 | msgstr "Copyright: " 172 | 173 | msgid "Company: " 174 | msgstr "Entreprise: " 175 | 176 | msgid "Comment: " 177 | msgstr "Commentaire: " 178 | 179 | msgid "Timeout occured - continue anyway?" 180 | msgstr "Timeout survenu - continuer quand même ?" 181 | 182 | msgid "Error: " 183 | msgstr "Erreur: " 184 | -------------------------------------------------------------------------------- /languages/project/fr/language.cfg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/project/fr/language.cfg -------------------------------------------------------------------------------- /languages/project/hu/default.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/project/hu/default.mo -------------------------------------------------------------------------------- /languages/project/hu/default.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: InnoUnpack\n" 9 | "POT-Creation-Date: 2025-01-19 13:08+0100\n" 10 | "PO-Revision-Date: 2025-01-19 16:08+0100\n" 11 | "Last-Translator: J. Rathlev \n" 12 | "Language-Team: J. Rathlev \n" 13 | "Language: hu\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "X-Generator: Poedit 3.5\n" 18 | "X-Poedit-SourceCharset: ISO-8859-1\n" 19 | 20 | msgid "Inspect and unpack InnoSetup files" 21 | msgstr "Vizsgál és kibont InnoSetup fájlokat" 22 | 23 | msgid "InnoSetup archive:" 24 | msgstr "InnoSetup-Archívum:" 25 | 26 | msgid "Select unpack tool" 27 | msgstr "Válasszon kicsomagolási eszközt" 28 | 29 | msgid "Quit program" 30 | msgstr "Kilépés a programból" 31 | 32 | msgid "Show list of all contained files" 33 | msgstr "Az összes tartalmazott fájl listájának megjelenítése" 34 | 35 | msgid "File list" 36 | msgstr "Fájlok listája" 37 | 38 | msgid "Extract files" 39 | msgstr "Fájlok kinyerése" 40 | 41 | msgid "Verify setup" 42 | msgstr "Beállítás ellenőrzése" 43 | 44 | msgid "Select InnoSetup archive" 45 | msgstr "Az InnoSetup archívum kiválasztása" 46 | 47 | msgid "Process embedded files" 48 | msgstr "Beágyazott fájlok feldolgozása" 49 | 50 | msgid "About the program" 51 | msgstr "A program névjegye" 52 | 53 | msgid "InnoSetup archive is encrypted" 54 | msgstr "Az InnoSetup archívum titkosított" 55 | 56 | msgid "Password:" 57 | msgstr "Jelszó:" 58 | 59 | msgid "Show list of all supported Inno Setup versions" 60 | msgstr "Az összes támogatott Inno Setup verzió listájának megjelenítése" 61 | 62 | msgid "Show list of all supported languages" 63 | msgstr "Az összes támogatott nyelv listájának megjelenítése" 64 | 65 | msgid "Languages" 66 | msgstr "Nyelvek" 67 | 68 | msgid "Show general information" 69 | msgstr "Általános információk megjelenítése" 70 | 71 | msgid "Extract to directory:" 72 | msgstr "Kivonatolás a könyvtárba:" 73 | 74 | msgid "File filter:" 75 | msgstr "Fájlszűrő:" 76 | 77 | msgid "Extract files to this directory" 78 | msgstr "Fájlok kinyerése ebbe a mappába" 79 | 80 | msgid "Start extraction" 81 | msgstr "Kinyerés indítása" 82 | 83 | msgid "Extract" 84 | msgstr "Kibontás" 85 | 86 | msgid "Process duplicate files" 87 | msgstr "Dupla fájlok folyamata" 88 | 89 | msgid "Overwrite files" 90 | msgstr "Fájlok felülírása" 91 | 92 | msgid "Without paths" 93 | msgstr "Útvonalak nélkül" 94 | 95 | msgid "Edit file filter" 96 | msgstr "Fájlszűrő szerkesztése" 97 | 98 | msgid "Select directory for extracted files" 99 | msgstr "Kiválasztott könyvtár kinyert fájlig" 100 | 101 | msgid "Use directory of setup archive" 102 | msgstr "A beállítási archívum könyvtárának használata" 103 | 104 | msgid "Filter for install script" 105 | msgstr "Szűrő a telepítő scripthez" 106 | 107 | msgid "Copy output to clipboard" 108 | msgstr "Másolás vágólapra" 109 | 110 | msgid "Scroll down" 111 | msgstr "Görgetés le" 112 | 113 | msgid "Scroll up" 114 | msgstr "Görgetés fel" 115 | 116 | msgid "" 117 | "Command line options: [] [options]\n" 118 | "\t\t\t: name of setup file to be unpacked\n" 119 | "\t/d:\t: destination directory for unpacked files\n" 120 | "\t/f:\t: file filter\n" 121 | "\t/e:\t: encryption password\n" 122 | "\t/l:\t\t: language selection (en, de, fr, it or hu)\n" 123 | "\t/m\t\t: process internal embedded files\n" 124 | "\t/s\t\t: extract files without paths\n" 125 | "\t/a\t\t: process all copies of duplicate files\n" 126 | "\t/o\t\t: overwrite files\n" 127 | "\t/p\t\t: run as portable program" 128 | msgstr "" 129 | "Parancssori opciók: [] [options]\n" 130 | "\t\t\t: a kicsomagolandó telepítőfájl neve\n" 131 | "\t/d:\t: a kicsomagolt fájlok célkönyvtára\n" 132 | "\t/f:\t: fájlszűrő\n" 133 | "\t/e:\t: titkosítási jelszó\n" 134 | "\t/l:\t\t: nyelvválasztás (en, de, fr, it vagy hu)\n" 135 | "\t/m \t\t: belső beágyazott fájlok feldolgozása\n" 136 | "\t/s \t\t: fájlok kivonása elérési utak nélkül\n" 137 | "\t/a \t\t: a duplikált fájlok összes másolatának feldolgozása\n" 138 | "\t/o \t\t: fájlok felülírása\n" 139 | "\t/p\t\t : hordozható programként történő futtatás" 140 | 141 | msgid "This application only allows dropping of exe files!" 142 | msgstr "Ez az alkalmazás csak lehetővé teszi csepegés exe fájlokat!" 143 | 144 | msgid "Programs|*.exe|All files|*.*" 145 | msgstr "Programok|*.exe|Minden fájl|*.*" 146 | 147 | msgid "Search for \"innounp.exe\"" 148 | msgstr "Keresés \"innounp.exe\"" 149 | 150 | msgid "Filename: " 151 | msgstr "Fájlnév: " 152 | 153 | msgid "Extract files matching:" 154 | msgstr "A megfelelő fájlok kivonása:" 155 | 156 | msgid "Extract files from setup ..." 157 | msgstr "Fájlok kivonása a telepítőből ..." 158 | 159 | msgid "Destination directory: " 160 | msgstr "Célkönyvtár: " 161 | 162 | msgid "Name: " 163 | msgstr "Név: " 164 | 165 | msgid "Version: " 166 | msgstr "Verzió: " 167 | 168 | msgid "Copyright: " 169 | msgstr "Szerző: " 170 | 171 | msgid "Company: " 172 | msgstr "Cég: " 173 | 174 | msgid "Comment: " 175 | msgstr "Megjegyzés: " 176 | 177 | msgid "Timeout occured - continue anyway?" 178 | msgstr "Időkorlátozás történt - folytassuk mégis?" 179 | 180 | msgid "Error: " 181 | msgstr "Hiba: " 182 | -------------------------------------------------------------------------------- /languages/project/hu/language.cfg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/project/hu/language.cfg -------------------------------------------------------------------------------- /languages/project/ignore.po: -------------------------------------------------------------------------------- 1 | # Seems like a Font.Name extract 2 | #. MainForm.pnBottom.paShowText.pbShowText.Font.Name 3 | #: UnpackMain.dfm:2017 4 | msgid "Courier New" 5 | msgstr "" 6 | 7 | # Seems like a Font.Name extract 8 | #. MainForm.Font.Name 9 | #: UnpackMain.dfm:11 10 | msgid "Tahoma" 11 | msgstr "" 12 | 13 | -------------------------------------------------------------------------------- /languages/project/it/default.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/project/it/default.mo -------------------------------------------------------------------------------- /languages/project/it/default.po: -------------------------------------------------------------------------------- 1 | # FIRST AUTHOR , YEAR. 2 | # 3 | msgid "" 4 | msgstr "" 5 | "Project-Id-Version: InnoUnpack\n" 6 | "POT-Creation-Date: 2025-01-19 13:08+0100\n" 7 | "PO-Revision-Date: 2025-01-19 16:07+0100\n" 8 | "Last-Translator: J. Rathlev \n" 9 | "Language-Team: bovirus \n" 10 | "Language: it\n" 11 | "MIME-Version: 1.0\n" 12 | "Content-Type: text/plain; charset=UTF-8\n" 13 | "Content-Transfer-Encoding: 8bit\n" 14 | "X-Generator: Poedit 3.5\n" 15 | "X-Poedit-SourceCharset: ISO-8859-1\n" 16 | 17 | msgid "Inspect and unpack InnoSetup files" 18 | msgstr "Analizza/decomprimi file Inno Setup" 19 | 20 | msgid "InnoSetup archive:" 21 | msgstr "Archivio Inno Setup:" 22 | 23 | msgid "Select unpack tool" 24 | msgstr "Seleziona strumento decompressione" 25 | 26 | msgid "Quit program" 27 | msgstr "Esci dal programma" 28 | 29 | msgid "Show list of all contained files" 30 | msgstr "Mostra l'elenco di tutti i file contenuti" 31 | 32 | msgid "File list" 33 | msgstr "Elenco file" 34 | 35 | msgid "Extract files" 36 | msgstr "Estrai file" 37 | 38 | msgid "Verify setup" 39 | msgstr "Verifica installazione" 40 | 41 | msgid "Select InnoSetup archive" 42 | msgstr "Seleziona archivio Inno Setup" 43 | 44 | msgid "Process embedded files" 45 | msgstr "Elabora file incorporati" 46 | 47 | msgid "About the program" 48 | msgstr "Info sul programma" 49 | 50 | msgid "InnoSetup archive is encrypted" 51 | msgstr "Archivio InnoSetup criptato" 52 | 53 | msgid "Password:" 54 | msgstr "Password:" 55 | 56 | msgid "Show list of all supported Inno Setup versions" 57 | msgstr "Mostra l'elenco di tutte le versioni di Inno Setup supportate" 58 | 59 | msgid "Show list of all supported languages" 60 | msgstr "Mostra l'elenco di tutte le lingue supportate" 61 | 62 | msgid "Languages" 63 | msgstr "Lingue" 64 | 65 | msgid "Show general information" 66 | msgstr "Mostra informazioni generali" 67 | 68 | msgid "Extract to directory:" 69 | msgstr "Estrai nella cartella:" 70 | 71 | msgid "File filter:" 72 | msgstr "Filtro file:" 73 | 74 | msgid "Extract files to this directory" 75 | msgstr "Estrai file in questa cartella" 76 | 77 | msgid "Start extraction" 78 | msgstr "Avvia estrazione" 79 | 80 | msgid "Extract" 81 | msgstr "Estrai" 82 | 83 | msgid "Process duplicate files" 84 | msgstr "Elabora file duplicati" 85 | 86 | msgid "Overwrite files" 87 | msgstr "Sovrascrivi file" 88 | 89 | msgid "Without paths" 90 | msgstr "Estrai senza percorsi" 91 | 92 | msgid "Edit file filter" 93 | msgstr "Modifica il filtro del file" 94 | 95 | msgid "Select directory for extracted files" 96 | msgstr "Seleziona la cartella dove estrarre i file" 97 | 98 | msgid "Use directory of setup archive" 99 | msgstr "Utilizzare la directory dell'archivio di setup" 100 | 101 | msgid "Filter for install script" 102 | msgstr "Filtro per lo script di installazione" 103 | 104 | msgid "Copy output to clipboard" 105 | msgstr "Copia output negli Appunti" 106 | 107 | msgid "Scroll down" 108 | msgstr "Scorri verso il basso" 109 | 110 | msgid "Scroll up" 111 | msgstr "Scorrere verso l'alto" 112 | 113 | msgid "" 114 | "Command line options: [] [options]\n" 115 | "\t\t\t: name of setup file to be unpacked\n" 116 | "\t/d:\t: destination directory for unpacked files\n" 117 | "\t/f:\t: file filter\n" 118 | "\t/e:\t: encryption password\n" 119 | "\t/l:\t\t: language selection (en, de, fr, it or hu)\n" 120 | "\t/m\t\t: process internal embedded files\n" 121 | "\t/s\t\t: extract files without paths\n" 122 | "\t/a\t\t: process all copies of duplicate files\n" 123 | "\t/o\t\t: overwrite files\n" 124 | "\t/p\t\t: run as portable program" 125 | msgstr "" 126 | "Opzioni della riga di comando: [] [opzioni]\n" 127 | "\t\t\t: nome del file di setup da scompattare\n" 128 | "\t/d:\t: directory di destinazione per i file scompattati\n" 129 | "\t/f:\t: filtro per i file\n" 130 | "\t/e:\t: password di crittografia\n" 131 | "\t/l:\t\t: selezione della lingua (en, de, fr, it o hu)\n" 132 | "\t/m \t\t: elabora i file interni incorporati\n" 133 | "\t/s \t\t: estrarre i file senza percorso\n" 134 | "\t/a \t\t: elabora tutte le copie di file duplicati\n" 135 | "\t/o \t\t: sovrascrivere i file\n" 136 | "\t/p\t\t : eseguire come programma portatile" 137 | 138 | msgid "This application only allows dropping of exe files!" 139 | msgstr "Questa applicazione consente solo di rilasciare i file exe!" 140 | 141 | msgid "Programs|*.exe|All files|*.*" 142 | msgstr "Programmi|*.exe|Tutti i file|*.*" 143 | 144 | msgid "Search for \"innounp.exe\"" 145 | msgstr "Ricerca \"innounp.exe\"" 146 | 147 | msgid "Filename: " 148 | msgstr "Nome file: " 149 | 150 | msgid "Extract files matching:" 151 | msgstr "Estrarre i file corrispondenti:" 152 | 153 | msgid "Extract files from setup ..." 154 | msgstr "Estrarre i file dal setup ..." 155 | 156 | msgid "Destination directory: " 157 | msgstr "Directory di destinazione: " 158 | 159 | msgid "Name: " 160 | msgstr "Nome: " 161 | 162 | msgid "Version: " 163 | msgstr "Versione: " 164 | 165 | msgid "Copyright: " 166 | msgstr "Copyright: " 167 | 168 | msgid "Company: " 169 | msgstr "Società: " 170 | 171 | msgid "Comment: " 172 | msgstr "Commento: " 173 | 174 | msgid "Timeout occured - continue anyway?" 175 | msgstr "Si è verificato un timeout - continuare comunque?" 176 | 177 | msgid "Error: " 178 | msgstr "Errore: " 179 | -------------------------------------------------------------------------------- /languages/project/it/language.cfg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/project/it/language.cfg -------------------------------------------------------------------------------- /languages/project/language.cfg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/project/language.cfg -------------------------------------------------------------------------------- /languages/project/zh/default.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/project/zh/default.mo -------------------------------------------------------------------------------- /languages/project/zh/default.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: \n" 10 | "POT-Creation-Date: 2024-11-25 14:26+0100\n" 11 | "PO-Revision-Date: 2024-11-25 14:27+0100\n" 12 | "Last-Translator: J. Rathlev \n" 13 | "Language-Team: \n" 14 | "Language: zh\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "X-Generator: Poedit 3.5\n" 19 | 20 | msgid "Inspect and unpack InnoSetup files" 21 | msgstr "检查并解包 InnoSetup 文件" 22 | 23 | msgid "InnoSetup archive:" 24 | msgstr "InnoSetup 归档文件:" 25 | 26 | msgid "Select unpack tool" 27 | msgstr "选择解包工具" 28 | 29 | msgid "Quit program" 30 | msgstr "退出程序" 31 | 32 | msgid "Show list of all contained files" 33 | msgstr "显示所有包含的文件列表" 34 | 35 | #. MainForm.pnTop.bbList.Caption 36 | #: UnpackMain.dfm:241 37 | msgid "File list" 38 | msgstr "文件列表" 39 | 40 | msgid "Extract files" 41 | msgstr "提取文件" 42 | 43 | #. MainForm.pnTop.bbVerify.Caption 44 | #: UnpackMain.dfm:489 45 | msgid "Verify setup" 46 | msgstr "验证设置" 47 | 48 | msgid "Select InnoSetup archive" 49 | msgstr "选择 InnoSetup 归档文件" 50 | 51 | msgid "Process embedded files" 52 | msgstr "处理嵌入文件" 53 | 54 | msgid "About the program" 55 | msgstr "关于程序" 56 | 57 | msgid "InnoSetup archive is encrypted" 58 | msgstr "InnoSetup 归档文件已加密" 59 | 60 | msgid "Password:" 61 | msgstr "密码:" 62 | 63 | msgid "Show list of all supported Inno Setup versions" 64 | msgstr "显示支持的所有 Inno Setup 版本列表" 65 | 66 | msgid "Show list of all supported languages" 67 | msgstr "显示支持的所有语言列表" 68 | 69 | msgid "Languages" 70 | msgstr "语言" 71 | 72 | msgid "Show general information" 73 | msgstr "显示常规信息" 74 | 75 | msgid "Extract to directory:" 76 | msgstr "解压到目录:" 77 | 78 | msgid "File filter:" 79 | msgstr "文件筛选器:" 80 | 81 | msgid "Extract files to this directory" 82 | msgstr "将文件解压到此目录" 83 | 84 | msgid "Start extraction" 85 | msgstr "开始解压" 86 | 87 | msgid "Extract" 88 | msgstr "解压" 89 | 90 | msgid "Process duplicate files" 91 | msgstr "处理重复文件" 92 | 93 | msgid "Overwrite files" 94 | msgstr "覆盖文件" 95 | 96 | msgid "Without paths" 97 | msgstr "无路径" 98 | 99 | msgid "Edit file filter" 100 | msgstr "编辑文件筛选器" 101 | 102 | msgid "Select directory for extracted files" 103 | msgstr "选择解压文件的目录" 104 | 105 | msgid "Use directory of setup archive" 106 | msgstr "使用安装档案的目录" 107 | 108 | msgid "Filter for install script" 109 | msgstr "安装脚本筛选器" 110 | 111 | msgid "Copy output to clipboard" 112 | msgstr "复制输出到剪贴板" 113 | 114 | msgid "Scroll down" 115 | msgstr "向下滚动" 116 | 117 | msgid "Scroll up" 118 | msgstr "向上滚动" 119 | 120 | msgid "" 121 | "Command line options: [] [/d:] [/f:] [/p] [/m] [/s] " 122 | "[/a] [/o]\n" 123 | "\t\t: name of setup file to be unpacked\n" 124 | "\t\t: destination directory for unpacked files\n" 125 | "\t\t: file filter\n" 126 | "\t/p\t: run as portable program\n" 127 | "\t/m\t: process internal embedded files\n" 128 | "\t/s\t: extract files without paths\n" 129 | "\t/a\t: process all copies of duplicate files\n" 130 | "\t/o\t: overwrite files" 131 | msgstr "" 132 | "\t命令行选项: [] [/d:] [/f:] [/p] [/m] [/s] [/a] [/o]\n" 133 | "\t\t: 设置要解包文件的名称\n" 134 | "\t\t: 解包文件的目标目录\n" 135 | "\t\t: 文件筛选器\n" 136 | "\t/p\t: 作为可移植程序运行\n" 137 | "\t/m\t: 处理内部嵌入的文件\n" 138 | "\t/s\t: 不带路径提取文件\n" 139 | "\t/a\t: 处理所有重复文件的副本\n" 140 | "\t/o\t: 覆盖文件" 141 | 142 | msgid "This application only allows dropping of exe files!" 143 | msgstr "此应用程序仅允许拖放 exe 文件!" 144 | 145 | msgid "Programs|*.exe|All files|*.*" 146 | msgstr "程序|*.exe|所有文件|*.*" 147 | 148 | msgid "Search for \"innounp.exe\"" 149 | msgstr "搜索“innounp.exe”" 150 | 151 | msgid "Filename: " 152 | msgstr "文件名:" 153 | 154 | msgid "Extract files matching:" 155 | msgstr "解压匹配的文件:" 156 | 157 | msgid "Extract files from setup ..." 158 | msgstr "从设置中提取文件 ..." 159 | 160 | #: UnpackMain.pas:593 161 | msgid "Destination directory: " 162 | msgstr "目的地目录:" 163 | 164 | msgid "Name: " 165 | msgstr "名称:" 166 | 167 | msgid "Version: " 168 | msgstr "版本:" 169 | 170 | msgid "Copyright: " 171 | msgstr "版权:" 172 | 173 | msgid "Company: " 174 | msgstr "公司:" 175 | 176 | msgid "Comment: " 177 | msgstr "备注:" 178 | 179 | msgid "Timeout occured - continue anyway?" 180 | msgstr "发生超时 - 是否继续?" 181 | 182 | msgid "Error: " 183 | msgstr "错误:" 184 | 185 | -------------------------------------------------------------------------------- /languages/project/zh/language.cfg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/project/zh/language.cfg -------------------------------------------------------------------------------- /languages/tools/PoStrip.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/tools/PoStrip.zip -------------------------------------------------------------------------------- /languages/tools/readme.md: -------------------------------------------------------------------------------- 1 | ### Tools to process po files 2 | 3 | - **PoStrip:** Remove automatic comments from po file 4 | 5 | J. Rathlev, April 2o24 6 | 7 | -------------------------------------------------------------------------------- /languages/units/de/units.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/units/de/units.mo -------------------------------------------------------------------------------- /languages/units/es/units.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/units/es/units.mo -------------------------------------------------------------------------------- /languages/units/fr/units.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/units/fr/units.mo -------------------------------------------------------------------------------- /languages/units/hu/units.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/units/hu/units.mo -------------------------------------------------------------------------------- /languages/units/ignore.po: -------------------------------------------------------------------------------- 1 | #. Programmer's name for it: rsSPVersionShortStr 2 | #: UnitConsts.pas:74 3 | msgid "%s - Service Pack %1:d (%2:s)" 4 | msgstr "" 5 | 6 | #. Programmer's name for it: rsVersionShortStr 7 | #: UnitConsts.pas:73 8 | msgid "%s (%2:s)" 9 | msgstr "" 10 | 11 | #. Programmer's name for it: rsVersion10ShortStr 12 | #: UnitConsts.pas:78 13 | msgid "%s (Version %d, %s)" 14 | msgstr "" 15 | 16 | #. Programmer's name for it: rsVersion10Str 17 | #: UnitConsts.pas:76 18 | msgid "%s (Version %d, Build %d, %s)" 19 | msgstr "" 20 | 21 | #. Programmer's name for it: rsSPVersionLongStr 22 | #: UnitConsts.pas:71 23 | msgid "%s%s - Service Pack %5:d (Version %2:d.%3:d, Build %4:d, " 24 | "%6:s)" 25 | msgstr "" 26 | 27 | #. Programmer's name for it: rsVersion10LongStr 28 | #: UnitConsts.pas:75 29 | msgid "%s%s (Version %d, Build %d, %s)" 30 | msgstr "" 31 | 32 | #. Strings from SystemInfo 33 | #. Programmer's name for it: rsVersionLongStr 34 | #: UnitConsts.pas:70 35 | msgid "%s%s (Version %d.%d, Build %d, %6:s)" 36 | msgstr "" 37 | 38 | #. Programmer's name for it: rsBusiness 39 | #: UnitConsts.pas:81 40 | msgid "Business" 41 | msgstr "" 42 | 43 | #. Programmer's name for it: rsClusterServer 44 | #: UnitConsts.pas:82 45 | msgid "Cluster Server" 46 | msgstr "" 47 | 48 | #. Programmer's name for it: rsEnterprise 49 | #: UnitConsts.pas:85 50 | msgid "Enterprise" 51 | msgstr "" 52 | 53 | #. Programmer's name for it: rsEssBusinessMan 54 | #: UnitConsts.pas:94 55 | msgid "Essential Business Management Server" 56 | msgstr "" 57 | 58 | #. Programmer's name for it: rsEssBusinessMess 59 | #: UnitConsts.pas:96 60 | msgid "Essential Business Messaging Server" 61 | msgstr "" 62 | 63 | #. Programmer's name for it: rsEssBusinessSec 64 | #: UnitConsts.pas:95 65 | msgid "Essential Business Security Server" 66 | msgstr "" 67 | 68 | #. Programmer's name for it: rsEssServer 69 | #: UnitConsts.pas:97 70 | msgid "Essential Server" 71 | msgstr "" 72 | 73 | #. Programmer's name for it: rsHomeBasic 74 | #: UnitConsts.pas:89 75 | msgid "Home Basic" 76 | msgstr "" 77 | 78 | #. Programmer's name for it: rsHomePremium 79 | #: UnitConsts.pas:90 80 | msgid "Home Premium" 81 | msgstr "" 82 | 83 | #. Programmer's name for it: rsHomePremiumS 84 | #: UnitConsts.pas:91 85 | msgid "Home Premium Server" 86 | msgstr "" 87 | 88 | #. Programmer's name for it: rsHomeServer 89 | #: UnitConsts.pas:92 90 | msgid "Home Server" 91 | msgstr "" 92 | 93 | #. Programmer's name for it: rsHyperV 94 | #: UnitConsts.pas:93 95 | msgid "Hyper-V Server" 96 | msgstr "" 97 | 98 | # Doesn't look like text 99 | #: UnitStrings.pas:194 100 | msgid "preWin32-Error" 101 | msgstr "" 102 | 103 | #. Programmer's name for it: rsProfessionalN 104 | #: UnitConsts.pas:79 105 | msgid "Professional" 106 | msgstr "" 107 | 108 | #. Programmer's name for it: rsDataCenterCode 109 | #: UnitConsts.pas:84 110 | msgid "Server Datacenter (core)" 111 | msgstr "" 112 | 113 | #. Programmer's name for it: rsDataCenterFull 114 | #: UnitConsts.pas:83 115 | msgid "Server Datacenter (full)" 116 | msgstr "" 117 | 118 | #. Programmer's name for it: rsEnterpriseServerC 119 | #: UnitConsts.pas:87 120 | msgid "Server Enterprise (core)" 121 | msgstr "" 122 | 123 | #. Programmer's name for it: rsEnterpriseServerF 124 | #: UnitConsts.pas:86 125 | msgid "Server Enterprise (full)" 126 | msgstr "" 127 | 128 | #. Programmer's name for it: rsServerFound 129 | #: UnitConsts.pas:99 130 | msgid "Server Foundation" 131 | msgstr "" 132 | 133 | #. Programmer's name for it: rsStandardServerC 134 | #: UnitConsts.pas:103 135 | msgid "Server Standard Edition (core)" 136 | msgstr "" 137 | 138 | #. Programmer's name for it: rsStandardServer 139 | #: UnitConsts.pas:102 140 | msgid "Server Standard Edition (full)" 141 | msgstr "" 142 | 143 | #. Programmer's name for it: rsSmallBusiness 144 | #: UnitConsts.pas:100 145 | msgid "Small Business Server" 146 | msgstr "" 147 | 148 | #. Programmer's name for it: rsSmallBusinessP 149 | #: UnitConsts.pas:101 150 | msgid "Small Business Server Premium" 151 | msgstr "" 152 | 153 | #. Programmer's name for it: rsStarter 154 | #: UnitConsts.pas:104 155 | msgid "Starter Edition" 156 | msgstr "" 157 | 158 | #. Programmer's name for it: rsStgEnterprise 159 | #: UnitConsts.pas:105 160 | msgid "Storage Server Enterprise" 161 | msgstr "" 162 | 163 | #. Programmer's name for it: rsStgExpress 164 | #: UnitConsts.pas:106 165 | msgid "Storage Server Express" 166 | msgstr "" 167 | 168 | #. Programmer's name for it: rsStgStandard 169 | #: UnitConsts.pas:107 170 | msgid "Storage Server Standard" 171 | msgstr "" 172 | 173 | #. Programmer's name for it: rsStgWorkgroup 174 | #: UnitConsts.pas:108 175 | msgid "Storage Server Workgroup" 176 | msgstr "" 177 | 178 | #. Programmer's name for it: rsUltimate 179 | #: UnitConsts.pas:109 180 | msgid "Ultimate Edition" 181 | msgstr "" 182 | 183 | #. Programmer's name for it: rsWebServer 184 | #: UnitConsts.pas:110 185 | msgid "Web Server Edition" 186 | msgstr "" 187 | 188 | #. Programmer's name for it: rsWebServerC 189 | #: UnitConsts.pas:111 190 | msgid "Web Server Edition (core)" 191 | msgstr "" 192 | 193 | -------------------------------------------------------------------------------- /languages/units/it/units.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/units/it/units.mo -------------------------------------------------------------------------------- /languages/units/zh/units.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/languages/units/zh/units.mo -------------------------------------------------------------------------------- /pack-view-u.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/pack-view-u.ico -------------------------------------------------------------------------------- /pack-view.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/pack-view.ico -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | ### Inno Setup Unpacker - Windows GUI v 2.0 2 | 3 | #### Inspect and unpack InnoSetup archives 4 | 5 | [Inno Setup](http://www.jrsoftware.org/isinfo.php) is a popular program 6 | for making software installations. To verify and get files out of the self-extracting 7 | executable, these open source console applications are available: 8 | 9 | - Original version [Innounp](http://sourceforge.net/projects/innounp) (can be used up to InnoSetup 6.1) 10 | - Updated Unicode version [Innounp-2](innounp-2) (can be used up to InnoSetup 6.4.2) 11 | 12 | **InnoUnpacker** is a graphical user interface (GUI) for these console applications 13 | that makes the usage more comfortable. 14 | The executable setup to be processed can be loaded via a file selection dialog, just 15 | by drag & drop, using the command line or by an entry in the Windows context menu for *exe* files. 16 | Immediately after opening, the basic file info of the setup is displayed. All other functions are activated by clicking on one of the buttons: 17 | 18 | - General information about the setup 19 | - A list of all included files 20 | - All supported languages 21 | - Verify setup file 22 | - Start file extraction 23 | - Select destination directory for extracted files 24 | 25 | Optionally, you can specify whether only the installation script or the files 26 | matching a filter are to be extracted. 27 | 28 | **Note on execution as portable program:** 29 | The program settings are normally stored in the InnoUnpack.ini file in the 30 | user's *Application data* folder. If the program is started from a device connected 31 | via USB, the folder of the executable file of the program is used instead. 32 | The same applies if the program is started with the command line option "/p". 33 | 34 | 35 | [Application download](https://www.rathlev-home.de/index-e.html?tools/prog-e.html#unpack) 36 | 37 | -------------------------------------------------------------------------------- /units/FileConsts.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/units/FileConsts.pas -------------------------------------------------------------------------------- /units/IniFileUtils.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/units/IniFileUtils.pas -------------------------------------------------------------------------------- /units/InitProg.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/units/InitProg.pas -------------------------------------------------------------------------------- /units/InputString.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/units/InputString.pas -------------------------------------------------------------------------------- /units/LangUtils.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/units/LangUtils.pas -------------------------------------------------------------------------------- /units/ListUtils.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/units/ListUtils.pas -------------------------------------------------------------------------------- /units/MsgDialogs.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/units/MsgDialogs.pas -------------------------------------------------------------------------------- /units/NumberUtils.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/units/NumberUtils.pas -------------------------------------------------------------------------------- /units/PathUtils.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/units/PathUtils.pas -------------------------------------------------------------------------------- /units/Placeholders.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/units/Placeholders.pas -------------------------------------------------------------------------------- /units/SelectDlg.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/units/SelectDlg.pas -------------------------------------------------------------------------------- /units/SelectFromListDlg.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/units/SelectFromListDlg.pas -------------------------------------------------------------------------------- /units/ShellDirDlg.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/units/ShellDirDlg.pas -------------------------------------------------------------------------------- /units/StringUtils.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/units/StringUtils.pas -------------------------------------------------------------------------------- /units/UnitConsts.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/units/UnitConsts.pas -------------------------------------------------------------------------------- /units/Vcl.Shell.ShellConsts.pas: -------------------------------------------------------------------------------- 1 | {*******************************************************} 2 | { } 3 | { Delphi Visual Component Library } 4 | { } 5 | { Copyright (c) 1995, } 6 | { 2001-2015 Embarcadero Technologies Inc. } 7 | { } 8 | {*******************************************************} 9 | 10 | unit Vcl.Shell.ShellConsts; 11 | 12 | interface 13 | 14 | resourcestring 15 | SShellDefaultNameStr = 'Name'; 16 | SShellDefaultSizeStr = 'Size'; 17 | SShellDefaultTypeStr = 'Type'; 18 | SShellDefaultModifiedStr = 'Modified'; 19 | SShellNoDetails = 'Unable to retrieve folder details for "%s". Error code $%x'; 20 | SCallLoadDetails = '%s: Missing call to LoadColumnDetails'; 21 | SPalletePage = 'Samples'; 22 | SPropertyName = 'Root'; 23 | SRenamedFailedError = 'Rename to %s failed'; 24 | 25 | const 26 | SRFDesktop = 'rfDesktop'; { Do not localize } 27 | SCmdVerbOpen = 'open'; { Do not localize } 28 | SCmdVerbRename = 'rename'; { Do not localize } 29 | SCmdVerbDelete = 'delete'; { Do not localize } 30 | SCmdVerbPaste = 'paste'; { Do not localize } 31 | 32 | 33 | implementation 34 | 35 | end. 36 | -------------------------------------------------------------------------------- /units/WinApiUtils.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/units/WinApiUtils.pas -------------------------------------------------------------------------------- /units/WinShell.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/units/WinShell.pas -------------------------------------------------------------------------------- /units/WinUtils.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jrathlev/InnoUnpacker-Windows-GUI/55ec645957a8a8515ebff424bd38ba7d8274d6a5/units/WinUtils.pas --------------------------------------------------------------------------------