ADD: SevenZip - install plugin under Linux (experimental)

This commit is contained in:
Alexander Koblov 2025-10-11 13:39:55 +03:00
commit bc9d0074d2
4 changed files with 52 additions and 30 deletions

View file

@ -52,6 +52,7 @@ mkdir -p $DC_INSTALL_DIR/plugins/wcx/deb
mkdir -p $DC_INSTALL_DIR/plugins/wcx/rpm
mkdir -p $DC_INSTALL_DIR/plugins/wcx/unrar
mkdir -p $DC_INSTALL_DIR/plugins/wcx/zip
mkdir -p $DC_INSTALL_DIR/plugins/wcx/sevenzip
# WDX plugins directories
mkdir -p $DC_INSTALL_DIR/plugins/wdx
mkdir -p $DC_INSTALL_DIR/plugins/wdx/scripts
@ -88,6 +89,8 @@ cp -r plugins/wcx/unrar/language $DC_INSTALL_DIR/plugins/wcx/
install -m 644 plugins/wcx/unrar/unrar.wcx $DC_INSTALL_DIR/plugins/wcx/unrar/
cp -r plugins/wcx/zip/language $DC_INSTALL_DIR/plugins/wcx/zip
install -m 644 plugins/wcx/zip/zip.wcx $DC_INSTALL_DIR/plugins/wcx/zip/
cp -r plugins/wcx/sevenzip/language $DC_INSTALL_DIR/plugins/wcx/sevenzip
install -m 644 plugins/wcx/sevenzip/sevenzip.wcx $DC_INSTALL_DIR/plugins/wcx/sevenzip/
# WDX
install -m 644 plugins/wdx/rpm_wdx/rpm_wdx.wdx $DC_INSTALL_DIR/plugins/wdx/rpm_wdx/
install -m 644 plugins/wdx/deb_wdx/deb_wdx.wdx $DC_INSTALL_DIR/plugins/wdx/deb_wdx/

View file

@ -19,6 +19,12 @@ $lazbuild wcx/rpm/src/rpm.lpi $DC_ARCH
$lazbuild wcx/unrar/src/unrar.lpi $DC_ARCH
$lazbuild wcx/zip/src/Zip.lpi $DC_ARCH
if [ -n $(uname | grep Linux) ]; then
$lazbuild wcx/sevenzip/src/SevenZipWcx.lpi $DC_ARCH
fi
# WDX plugins
$lazbuild wdx/rpm_wdx/src/rpm_wdx.lpi $DC_ARCH
$lazbuild wdx/deb_wdx/src/deb_wdx.lpi $DC_ARCH

View file

@ -89,6 +89,10 @@ uses
DCOSUtils, DCClassesUtf8, uGlobs, uLng, uDCUtils;
procedure UpdatePlugins;
{$IF DEFINED(MSWINDOWS) or DEFINED(LINUX)}
const
Z7ip = {$IFDEF MSWINDOWS}True{$ELSE}False{$ENDIF};
{$ENDIF}
var
I: Integer;
Folder: String;
@ -106,10 +110,10 @@ begin
if I < 0 then
gWCXPlugins.Add('jar', 990, Folder + 'zip' + PathDelim + 'zip.wcx');
{$IF DEFINED(MSWINDOWS)}
{$IF DEFINED(MSWINDOWS) or DEFINED(LINUX)}
I:= gWCXPlugins.IndexOfName('7z');
if I < 0 then
gWCXPlugins.Add('7z', 607, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
gWCXPlugins.Add('7z', 607, Z7ip, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
{$ENDIF}
I:= gWCXPlugins.IndexOfName('tar');
@ -203,70 +207,6 @@ begin
// For deb used another plugin, so update path too
gWCXPlugins.FileName[I]:= Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx';
end;
I:= gWCXPlugins.IndexOfName('arj');
if I < 0 then
gWCXPlugins.Add('arj', 4, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('cab');
if I < 0 then
gWCXPlugins.Add('cab', 4, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('cramfs');
if I < 0 then
gWCXPlugins.Add('cramfs', 4, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('dmg');
if I < 0 then
gWCXPlugins.Add('dmg', 4, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('fat');
if I < 0 then
gWCXPlugins.Add('fat', 4, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('hfs');
if I < 0 then
gWCXPlugins.Add('hfs', 4, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('iso');
if I < 0 then
gWCXPlugins.Add('iso', 4, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('lha');
if I < 0 then
gWCXPlugins.Add('lha', 4, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('lzh');
if I < 0 then
gWCXPlugins.Add('lzh', 4, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('ntfs');
if I < 0 then
gWCXPlugins.Add('ntfs', 4, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('squashfs');
if I < 0 then
gWCXPlugins.Add('squashfs', 4, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('taz');
if I < 0 then
gWCXPlugins.Add('taz', 4, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('vhd');
if I < 0 then
gWCXPlugins.Add('vhd', 4, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('wim');
if I < 0 then
gWCXPlugins.Add('wim', 85, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('xar');
if I < 0 then
gWCXPlugins.Add('xar', 4, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('z');
if I < 0 then
gWCXPlugins.Add('z', 4, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
{$ELSE}
I:= gWCXPlugins.IndexOfName('cpio');
if I < 0 then
@ -281,6 +221,72 @@ begin
gWCXPlugins.Flags[I]:= 4;
{$ENDIF}
{$IF DEFINED(MSWINDOWS) or DEFINED(LINUX)}
I:= gWCXPlugins.IndexOfName('arj');
if I < 0 then
gWCXPlugins.Add('arj', 4, Z7ip, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('cab');
if I < 0 then
gWCXPlugins.Add('cab', 4, Z7ip, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('cramfs');
if I < 0 then
gWCXPlugins.Add('cramfs', 4, Z7ip, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('dmg');
if I < 0 then
gWCXPlugins.Add('dmg', 4, Z7ip, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('fat');
if I < 0 then
gWCXPlugins.Add('fat', 4, Z7ip, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('hfs');
if I < 0 then
gWCXPlugins.Add('hfs', 4, Z7ip, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('iso');
if I < 0 then
gWCXPlugins.Add('iso', 4, Z7ip, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('lha');
if I < 0 then
gWCXPlugins.Add('lha', 4, Z7ip, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('lzh');
if I < 0 then
gWCXPlugins.Add('lzh', 4, Z7ip, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('ntfs');
if I < 0 then
gWCXPlugins.Add('ntfs', 4, Z7ip, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('squashfs');
if I < 0 then
gWCXPlugins.Add('squashfs', 4, Z7ip, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('taz');
if I < 0 then
gWCXPlugins.Add('taz', 4, Z7ip, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('vhd');
if I < 0 then
gWCXPlugins.Add('vhd', 4, Z7ip, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('wim');
if I < 0 then
gWCXPlugins.Add('wim', 85, Z7ip, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('xar');
if I < 0 then
gWCXPlugins.Add('xar', 4, Z7ip, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
I:= gWCXPlugins.IndexOfName('z');
if I < 0 then
gWCXPlugins.Add('z', 4, Z7ip, Folder + 'sevenzip' + PathDelim + 'sevenzip.wcx');
{$ENDIF}
I:= gWCXPlugins.IndexOfName('rpm');
if I < 0 then
gWCXPlugins.Add('rpm', 4, Folder + 'rpm' + PathDelim + 'rpm.wcx')

View file

@ -176,6 +176,7 @@ Type
procedure Save(AConfig: TXmlConfig; ANode: TXmlNode);
function ComputeSignature(seed: dword): dword;
function Add(Ext: String; Flags: PtrInt; FileName: String): Integer; reintroduce;
function Add(Ext: String; Flags: PtrInt; AEnabled: Boolean; FileName: String): Integer; reintroduce;
function FindFirstEnabledByName(Name: String): Integer;
function Find(const aFileName, aExt: String): Integer; overload;
function LoadModule(const FileName: String): TWcxModule;
@ -762,6 +763,12 @@ begin
Result:= AddObject(Ext + '=' + IntToStr(Flags) + #44 + FileName, TObject(True));
end;
function TWCXModuleList.Add(Ext: String; Flags: PtrInt; AEnabled: Boolean;
FileName: String): Integer;
begin
Result:= AddObject(Ext + '=' + IntToStr(Flags) + #44 + FileName, TObject(UIntPtr(AEnabled)));
end;
function TWCXModuleList.FindFirstEnabledByName(Name: String): Integer;
begin
Result:=0;