2
0
Martijn Laan 3 сар өмнө
parent
commit
597b080468

BIN
Files/is7z.dll


+ 4 - 4
Files/is7z.dll.issig

@@ -1,6 +1,6 @@
 format issig-v1
-file-size 1428112
-file-hash 451d9c034dd8189bb093b0327cf9d9535f05b79cefd9c716cc8a77963d8316ca
+file-size 1089168
+file-hash aaee107184d026680517e27e89ace2d308d69c08489312d3d6a30f9d5c726472
 key-id def0147c3bbc17ab99bf7b7a9c2de1390283f38972152418d7c2a4a7d7131a38
-sig-r b8544e101fbddb74b3af74dee976954ae43add1de96456301dc7b41a61787292
-sig-s 770b2cdccf092406cefef182232e7b4c7b11953bcbe5d92d068b574baa936020
+sig-r aa9fda0b187df585031c04cfe40182c2d40992a265f710641e5aa4091e21884e
+sig-s 8b155e8e4a775f1c2cb3edb1b7a32ccba9713d7c112e64504e4df5b2c50a8e72

+ 4 - 4
ISHelp/isetup.xml

@@ -4729,9 +4729,9 @@ Name: portablemode; Description: "Portable Mode"</pre></example>
 <body>
 <p>This specifies the method of archive extraction.</p>
 <p><tt>basic</tt> uses an embedded version of the "7z ANSI-C Decoder" from the LZMA SDK by Igor Pavlov, as-is, except that Unicode support and error messages were improved and that it outputs memory requirements. It only supports .7z archives that are not password-protected.</p>
-<p><tt>enhanced/nopassword</tt> uses 7zxr.dll from the 7-Zip source code by Igor Pavlov, as-is, except that it was recompiled and code-signed. Compared to <tt>basic</tt>, it has lower memory requirements for archives that contain large files but increases the size of the Setup file(s). It still only supports .7z archives that are not password-protected.</p>
-<p><tt>enhanced</tt> uses 7zxa.dll instead of 7zxr.dll, recompiled and code-signed. It still only supports .7z archives, but they may be password-protected.</p>
-<p><tt>full</tt> uses 7z.dll instead of 7zxa.dll, recompiled and code-signed. It supports multiple archive formats.</p>
+<p><tt>enhanced/nopassword</tt> uses 7zxr.dll from the 7-Zip source code by Igor Pavlov, as-is, except that it was recompiled, code-signed, and renamed to is7zxr.dll. Compared to <tt>basic</tt>, it has lower memory requirements for archives that contain large files but increases the size of the Setup file(s). It still only supports .7z archives that are not password-protected.</p>
+<p><tt>enhanced</tt> uses 7zxa.dll instead of 7zxr.dll, recompiled, code-signed, and renamed to is7zxa.dll. It still only supports .7z archives, but they may be password-protected.</p>
+<p><tt>full</tt> uses 7z.dll instead of 7zxa.dll, recompiled, code-signed, and renamed to is7z.dll. It supports multiple archive formats, although not as many as the original 7z.dll, to reduce its size.</p>
 <p>The following table summarizes the differences between these methods.</p>
 <indent>
 <table>
@@ -4739,7 +4739,7 @@ Name: portablemode; Description: "Portable Mode"</pre></example>
 <tr><td><tt>basic</tt> (default)</td><td>High for large files*</td><td>No</td><td>0 KB</td><td>.7z</td></tr>
 <tr><td><tt>enhanced/nopassword</tt></td><td>Normal</td><td>No</td><td>101 KB</td><td>.7z</td></tr>
 <tr><td><tt>enhanced</tt></td><td>Normal</td><td>Yes</td><td>124 KB</td><td>.7z</td></tr>
-<tr><td><tt>full</tt></td><td>Normal</td><td>Yes</td><td>614 KB</td><td>.7z, .zip, .bzip2, .rar, .cab, .lzma, .xz, .wim, .iso, .rpm, .deb, .tar, .gzip</td></tr>
+<tr><td><tt>full</tt></td><td>Normal</td><td>Yes</td><td>453 KB</td><td>.7z, .zip, .gz, .bz2, .xz, .tar, .rar, .iso, .msi, .cab, .rpm, .vhd, .vhdx, .vdi, .vmdk, .wim, .dmg</td></tr>
 </table>
 <p>* = When extracting a file, at least enough memory will always be allocated to hold the <b>entire</b> file, regardless of the block size. For example, extracting a 1 GB file using the <tt>basic</tt> method requires at least 1 GB of RAM. Consider using a different method for archives that contain large files: their memory requirements depend on the dictionary size only.</p>
 </indent>

+ 26 - 18
Projects/Src/Compression.SevenZipDLLDecoder.pas

@@ -407,32 +407,40 @@ procedure ExtractArchiveRedir(const DisableFsRedir: Boolean;
 
   function GetHandler(const Ext, NotFoundErrorMsg: String): TGUID;
   begin
-    if SameText(Ext, '.zip') then
+    if SameText(Ext, '.7z') then
+      Result := CLSID_Handler7z
+    else if SameText(Ext, '.zip') then
       Result := CLSID_HandlerZip
-    else if SameText(Ext, '.bzip2') then
+    else if SameText(Ext, '.gz') then
+      Result := CLSID_HandlerGzip
+    else if SameText(Ext, '.bz2') then
       Result := CLSID_HandlerBZip2
-    else if SameText(Ext, '.rar') then
-      Result := CLSID_HandlerRar
-    else if SameText(Ext, '.7z') then
-      Result := CLSID_Handler7z
-    else if SameText(Ext, '.cab') then
-      Result := CLSID_HandlerCab
-    else if SameText(Ext, '.lzma') then
-      Result := CLSID_HandlerLzma
     else if SameText(Ext, '.xz') then
       Result := CLSID_HandlerXz
-    else if SameText(Ext, '.wim') then
-      Result := CLSID_HandlerWim
+    else if SameText(Ext, '.tar') then
+      Result := CLSID_HandlerTar
+    else if SameText(Ext, '.rar') then
+      Result := CLSID_HandlerRar
     else if SameText(Ext, '.iso') then
       Result := CLSID_HandlerIso
+    else if SameText(Ext, '.msi') then
+      Result := CLSID_HandlerCompound
+    else if SameText(Ext, '.cab') then
+      Result := CLSID_HandlerCab
     else if SameText(Ext, '.rpm') then
       Result := CLSID_HandlerRpm
-    else if SameText(Ext, '.deb') then
-      Result := CLSID_HandlerDeb
-    else if SameText(Ext, '.tar') then
-      Result := CLSID_HandlerTar
-    else if SameText(Ext, '.gzip') then
-      Result := CLSID_HandlerGzip
+    else if SameText(Ext, '.vhd') then
+      Result := CLSID_HandlerVhd
+    else if SameText(Ext, '.vhdx') then
+      Result := CLSID_HandlerVhdx
+    else if SameText(Ext, '.vdi') then
+      Result := CLSID_HandlerVDI
+    else if SameText(Ext, '.vmdk') then
+      Result := CLSID_HandlerVMDK
+    else if SameText(Ext, '.wim') then
+      Result := CLSID_HandlerWim
+    else if SameText(Ext, '.dmg') then
+      Result := CLSID_HandlerDmg
     else
       InternalError(NotFoundErrorMsg);
   end;