UPD: Continue to implement determining archive type by signature for MultiArchiveFileSource

This commit is contained in:
Alexander Koblov 2010-04-25 07:38:48 +00:00
commit c15d06c560
3 changed files with 13 additions and 0 deletions

View file

@ -287,6 +287,7 @@ p,ul,ol /* Paragraph Style */
<p class=rvps3><span class=rvts20>ID</span><span class=rvts21> (optional) archive ID (2-digit hex numbers delimited with spaces). </span></p>
<p class=rvps3><span class=rvts20>IDPos</span><span class=rvts21> (optional) ID position in archive. If not present, ID will be searched in starting part of archive. You can define the positions with "-" sign. In this case the positions will be calculated from end of file. Special value &lt;SeekID&gt; determinated search ID if not found by numeric values of IDPos. Seek in range 0 - (Smalest of Size of file or IDSeekRange). Values can be writed as decimal (12345) or heximal (03039). For negative values use notation 0xFFFFFFFF (-1).</span></p>
<p class=rvps3><span class=rvts20>IDSeekRange</span><span class=rvts21> (optional) count of bytes where ID seek if defined &lt;SeekID&gt;. By default IDSeekRange = 1Mb. See </span><span class=rvts20>IDPOS</span><span class=rvts21>. </span></p>
<!--
<p class=rvps3><span class=rvts20>ExcludeIDs</span><span class=rvts21> (optional) Signatures if found in file, file defined as the "process imposible".</span></p>
<p class=rvps3><span class=rvts21>This opportunity entered for correct process files, generated&nbsp; InnoSetup, NSIS (NullSoft Instalation System) or other.</span></p>
<p class=rvps3><span class=rvts21>Algoritm of working of parameter:</span></p>
@ -325,6 +326,7 @@ p,ul,ol /* Paragraph Style */
<p class=rvps3><span class=rvts21>0&nbsp; 1&nbsp; 2&nbsp; 3&nbsp; 4&nbsp; 5&nbsp; 6&nbsp; 7&nbsp; 8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EOF </span></p>
<p class=rvps3><span class=rvts21>xx xx xx xx xx 01 02 03 04 .............. 08&nbsp;&nbsp; rule 08,-1, 1</span></p>
<p class=rvps3><span class=rvts21>xx xx xx xx xx 01 03 02 xx .............. 08</span></p>
-->
<p class=rvps3><span class=rvts20>Extension</span><span class=rvts21> archive format extension (without dot). </span></p>
<p class=rvps3><span class=rvts22>Note:</span><span class=rvts21>All above parameters can be defined with multiple values. You can use comma to separate those multiple values. </span></p>
<p class=rvps3><span class=rvts20>Description</span><span class=rvts21> archive description. A short string - version, author etc.</span></p>

View file

@ -283,6 +283,7 @@ p,ul,ol /* Paragraph Style */
<p class=rvps4><span class=rvts21>IDPos = 0х3039</span></p>
<p class=rvps4><span class=rvts21>Отрицательные значения в шестнадцатеричном виде описываются как 0xFFFFFFFF (-1 в десятичном)</span></p>
<p class=rvps4><span class=rvts20>IDSeekRange</span><span class=rvts21> (необязательный) число байт, в котором MultiArc будет пытаться найти ID.Если параметр отсутствует, будет использовано меньшее из значений Размерайла или 1Мбайт. Поиск всегда происходит от начала файла, SkipSfxHeader игнорируется. Это может замедлить открытие архивов или поиск в архиве. Если отсутствует IDPOS, тогда используется поиск ID в диаппазонеот начала файла до меньшего из значений -- (размер файла, IDSeekRange).</span></p>
<!--
<p class=rvps4><span class=rvts20>ExcludeIDs</span><span class=rvts21> (необязательный)&nbsp; Сигнатура при нахождении которой файл определяется как "Обработать не возможно". </span></p>
<p class=rvps4><span class=rvts21>Данная возможность введена для корректной обработки файлов генерируемых программами InnoSetup, NSIS (NullSoft Instalation System) и возможно другими.</span></p>
<p class=rvps4><span class=rvts21>Алгоритм работы данного параметра:</span></p>
@ -319,6 +320,7 @@ p,ul,ol /* Paragraph Style */
<p class=rvps4><span class=rvts21>0&nbsp; 1&nbsp; 2&nbsp; 3&nbsp; 4&nbsp; 5&nbsp; 6&nbsp; 7&nbsp; 8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EOF </span></p>
<p class=rvps4><span class=rvts21>xx xx xx xx xx 01 02 03 04 .............. 08&nbsp;&nbsp; правило (08,-1, 1)</span></p>
<p class=rvps4><span class=rvts21>xx xx xx xx xx 01 03 02 xx .............. 08</span></p>
-->
<p class=rvps4><span class=rvts20>Extension</span><span class=rvts21> расширения, которые используются архивами (без точки).</span></p>
<p class=rvps4><span class=rvts20>Description</span><span class=rvts21> Описание архиватора. Строка содержащая версию, автора и т.п. </span></p>
<p class=rvps4><span class=rvts22>Пример:</span></p>

View file

@ -105,12 +105,14 @@ type
FAdd,
FAddMultiVolume,
FAddSelfExtract: UTF8String;
FIDSeekRange: LongInt;
public
FEnabled: Boolean;
FOutput: Boolean;
FDebug: Boolean;
constructor Create;
destructor Destroy; override;
function CanYouHandleThisFile(const FileName: UTF8String): Boolean;
property FID: AnsiString read FSignature write SetSignature;
property FIDPos: AnsiString read FSignaturePosition write SetSignaturePosition;
end;
@ -212,6 +214,7 @@ begin
FDescription:= TrimQuotes(IniFile.ReadString(Section, 'Description', EmptyStr));
FID:= TrimQuotes(IniFile.ReadString(Section, 'ID', EmptyStr));
FIDPos:= TrimQuotes(IniFile.ReadString(Section, 'IDPos', EmptyStr));
FIDSeekRange:= IniFile.ReadInteger(Section, 'IDSeekRange', 0);
FExtension:= TrimQuotes(IniFile.ReadString(Section, 'Extension', EmptyStr));
FStart:= TrimQuotes(IniFile.ReadString(Section, 'Start', EmptyStr));
FEnd:= TrimQuotes(IniFile.ReadString(Section, 'End', EmptyStr));
@ -264,6 +267,7 @@ begin
IniFile.WriteString(Section, 'Description', FDescription);
IniFile.WriteString(Section, 'ID', FID);
IniFile.WriteString(Section, 'IDPos', FIDPos);
IniFile.WriteInteger(Section, 'IDSeekRange', FIDSeekRange);
IniFile.WriteString(Section, 'Extension', FExtension);
IniFile.WriteString(Section, 'Start', FStart);
IniFile.WriteString(Section, 'End', FEnd);
@ -372,6 +376,11 @@ begin
inherited Destroy;
end;
function TMultiArcItem.CanYouHandleThisFile(const FileName: UTF8String): Boolean;
begin
end;
{ TSignatureList }
function TSignatureList.GetSignature(Index: Integer): PSignature;