├── .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
--------------------------------------------------------------------------------