ZIPProvider オブジェクトは、ビジュアル ツールが ZIP ファイルの圧縮や解凍に使う汎用 PKZIP サービス オブジェクトです。VTOM スクリプト内でこのオブジェクトを使うと、ビジュアル ツール内から低レベルの PKZIP 操作を実行することができます。Allaire 社では、これらの一連の ZIP 操作にライセンス管理を採用しているため、ユーザは、ビジュアル ツール外で ZIPProvider オブジェクトを使うことはできません。
アーカイブ ファイルを圧縮するときの圧縮レベルを設定するか、または返します。このプロパティは、0 〜 9 の値に設定することができます。0 は圧縮率ゼロ、1 は最高速度圧縮、9 は最低速ながら圧縮率は最高です。
Extract メソッドを使って既存のアーカイブ ファイルからファイルを抽出するときのディレクトリ パスを設定するか、または返します。
アーカイブ内の要素の数を返します。
新しく抽出されたファイルが、ExtractionDir ディレクトリ内の既存のファイルを上書きするかどうかを設定するか、または返します。
アーカイブ ファイルのパスワードを設定するか、または返します。パスワード保護されているファイルを抽出したり、作成したアーカイブ ファイル内のファイルをパスワード保護したりする場合に、このプロパティを設定してください。
アーカイブ ファイルについてのコメントを設定するか、または返します。このプロパティを使うと、既存のアーカイブ ファイルのコメントを読み出したり、作成した新しいアーカイブ ファイルのコメントを設定したりすることができます。
操作が適用されるアーカイブ ファイル パスを設定するか、または返します。新規のアーカイブ ファイル セットを作成するには、このプロパティを新規ファイルのファイル パスに設定し、Add メソッドを呼び出して、この新規ファイルに内容を組み込みます。既存のアーカイブ ファイル セットにファイルを追加したり、セットからファイルを削除したり、抽出したりするには、このプロパティをファイルのファイル パスに設定し、そのファイルに対して Add、Delete、および Extract メソッドを呼び出します。
次の例は、ZIPFile プロパティを使って、他のファイル (d:\\downloads\\test.zip) からファイル (somefile.exe) を抽出します。
function Main () {
var hsOKInfo = 64;
var app = Application;
var ZIPPro = app.ZIPProvider;
ZIPPro.ExtractionDir = 'd:\\ExtractHere\\'; ZIPPro.ZipFile =
'd:\\downloads\\test.zip';
var ResultCode = ZIPPro.Extract('somefile.exe');
app.MessageBox( "Return Code :" + ResultCode ,"ZIPProvider",
hsOKInfo);
}
function Add(Files: OleVariant; bRecurse, bIncludeDirs, bIncludeHiddenFiles, bIncludeVolumeLabels: WordBool): Integer
アーカイブにファイルを追加します。追加するファイルのグループを絞り込むには、Files パラメータを使います。1 つのファイルを指定したり、改行で区切って一連のファイルを指定したり、ワイルドカードを使ってディレクトリ全体を指定したりすることができます。サブフォルダを追加するには、bRecurse パラメータを使います。ディレクトリ情報をアーカイブに保存するかどうかを指定するには、bIncludeDirs を使います。隠しファイルやボリューム ラベルを含めることに制限を加えるには、bIncludeHiddenFiles と bIncludeVolumeLabels を使います。Files パラメータの最初の要素にドライブ名を指定していない限り、 bIncludeVolumeLabels パラメータを True に設定しないでください。Files パラメータは、改行で区切った複数の要素を格納することができます。
この関数は、操作が成功したかどうかを確認できるステータス コードを返します。
例は次のとおりです。
function Main () {
var hsOKInfo = 64;
var app = Application;
var ZIPPro = app.ZIPProvider;
//圧縮するファイルを識別します。
var ZIPFiles = 'd:\\projects\\hs4\\scripts\\test.htm';
ZIPFiles = ZIPFiles + '\n' + 'd:\\projects\\hs4\\scripts\\test.zip';
ZIPFiles = ZIPFiles + '\n' + 'd:\\projects\\hs4\\scripts\\*.js';
//Add メソッドのオプションを記述します。
var bRecurse = true;
var bIncludeDirInfo = true;
var bIncludeHidden = true;
var bIncludeVolume = false;
//ZIP ファイルを生成し、Add メソッドを実行します。
ZIPPro.ZipFile = 'd:\\newzips\\newarchive.zip';
var nStatusCode = ZIPPro.Add( ZIPFiles , bRecurse, bIncludeDirInfo,
bIncludeHidden, bIncludeVolume );
//リターン コードを解釈して表示します。
var sMessage = '';
if (nStatusCode == 0){sMessage = "操作成功";}
else if (nStatusCode == 10){sMessage = "一般警告";}
else if (nStatusCode == 0 ){sMessage = "成功";}
else if (nStatusCode == 10 ){sMessage = "WarningGeneral";}
else if (nStatusCode == 30 ){sMessage = "WarningNoZipFile";}
else if (nStatusCode == 40 ){sMessage = "WarningFilesSkipped";}
else if (nStatusCode == 50 ){sMessage = "WarningEmptyZipFile";}
else if (nStatusCode == 100 ){sMessage = "ErrorNoZipFile";}
else if (nStatusCode == 110 ){sMessage = "ErrorZipStruct";}
else if (nStatusCode == 120 ){sMessage = "ErrorMemory";}
else if (nStatusCode == 130 ){sMessage = "ErrorBadCall";}
else if (nStatusCode == 140 ){sMessage = "ErrorNothingToDo";}
else if (nStatusCode == 150 ){sMessage = "ErrorDiskFull";}
else if (nStatusCode == 160 ){sMessage = "ErrorEOF";}
else if (nStatusCode == 180 ){sMessage = "ErrorLibInUse";}
else if (nStatusCode == 190 ){sMessage = "ErrorUserAbort";}
else if (nStatusCode == 200 ){sMessage = "ErrorTestFailed";}
else if (nStatusCode == 210 ){sMessage = "ErrorZeroTested";}
else if (nStatusCode == 240 ){sMessage = "ErrorDLLNotFound";}
else if (nStatusCode == 250 ){sMessage = "ErrorInternalLogic";}
else if (nStatusCode == 280 ){sMessage = "ErrorTempFile";}
else if (nStatusCode == 290 ){sMessage = "ErrorRead";}
else if (nStatusCode == 300 ){sMessage = "ErrorWrite";}
else if (nStatusCode == 310 ){sMessage = "ErrorCantCreateFile";}
else if (nStatusCode == 350 ){sMessage = "ErrorParentDir";}
else if (nStatusCode == 370 ){sMessage = "ErrorNameRepeat";}
else if (nStatusCode == 380 ){sMessage = "ErrorLatest";}
else if (nStatusCode == 400 ){sMessage = "ErrorDOSError";}
else if (nStatusCode == 410 ){sMessage = "ErrorMultidisk";}
else if (nStatusCode == 420 ){sMessage = "ErrorWrongDisk";}
else if (nStatusCode == 430 ){sMessage = "ErrorMultidiskBadCall";}
else if (nStatusCode == 440 ){sMessage = "ErrorCantOpenBinary";}
else if (nStatusCode == 450 ){sMessage =
"ErrorCantOpenSfxConfig";}
else if (nStatusCode == 460 ){sMessage =
"ErrorInvalidEventParam";}
else if (nStatusCode == 470 ){sMessage = "ErrorCantWriteSfx";}
else if (nStatusCode == 490 ){sMessage = "ErrorBinaryVersion";}
else if (nStatusCode == 500 ){sMessage = "ErrorNotLicensed";}
else if (nStatusCode == 510 ){sMessage = "ErrorCantCreateDir";}
app.MessageBox( sMessage ,"ZIPProvider", hsOKInfo);
}
function Delete(Files: OleVariant): Integer
アーカイブからファイルを削除します。削除するファイルのグループを絞り込むには Files パラメータを使います。1 つのファイルを指定したり、改行で区切って一連のファイルを指定したり、ワイルドカードを使ってディレクトリ全体を指定したりすることができます。文字列を空のままにすると、すべてのファイルが抽出されます。この関数は、操作が成功したかどうかを確認できるステータス コードを返します。
function Extract(Files: OleVariant): Integer
アーカイブからファイルを抽出します。抽出するファイルのグループを絞り込むには Files パラメータを使います。1 つのファイルを指定したり、改行で区切って一連のファイルを指定したり、ワイルドカードを使ってディレクトリ全体を指定したりすることができます。文字列を空のままにすると、すべてのファイルが抽出されます。この関数は、操作が成功したかどうかを確認できるステータス コードを返します。
function FileDate(nIndex: Integer): WideString
インデックスによって、既存のアーカイブ ファイル要素 (ファイル/ディレクトリ/ボリューム) の日付を返します。インデックス値は 0 〜 FileCount-1 です。
function FileIsDirectory(nIndex: Integer): WordBool
アーカイブ内の特定の要素がディレクトリであるかどうかを調べるにはこの関数を使います。インデックス値は 0 〜 FileCount-1 です。
function FileIsReadOnly(nIndex: Integer): WordBool
アーカイブ内の特定の要素が読み取り専用であるかどうかを調べるにはこの関数を使います。インデックス値は 0 〜 FileCount-1 です。
function FileIsHidden(nIndex: Integer): WordBool
アーカイブ内の特定の要素が隠しファイルであるかどうかを調べるにはこの関数を使います。インデックス値は 0 〜 FileCount-1 です。
function FileIsSystem(nIndex: Integer): WordBool
アーカイブ内の特定の要素がシステム ファイルであるかどうかを調べるにはこの関数を使います。インデックス値は 0 〜 FileCount-1 です。
function FileName(nIndex: Integer): WideString
インデックスによって、既存のアーカイブ ファイル要素 (ファイル/ディレクトリ/ボリューム) の名前を返します。インデックス値は 0 〜 FileCount-1 です。次のコードは、特定のファイル名を探すために、アーカイブの内容をループ処理します。
function Main () {
var hsOKInfo = 64;
var app = Application;
var ZIPPro = app.ZIPProvider;
ZIPPro.ZipFile = 'd:\\zipfiles\\test.zip';
// Zip ファイルの内容をループ処理します。
for ( x = 0; x < ZIPPro.FileCount; x++ ) {
if ( ZIPPro.FileName(x) == 'cfabort.vtm' ) {
app.MessageBox( "File found in the
archive.","ZIPProvider", hsOKInfo);
}
}
}
function FileSize(nIndex: Integer): Double
インデックスによって、既存のアーカイブ ファイル要素 (ファイル/ディレクトリ/ボリューム) のサイズを返します。インデックス値は 0 〜 FileCount-1 です。
function FileIsVolume(nIndex: Integer): WordBool
アーカイブ内の特定の要素がボリューム ラベルであるかどうかを調べるにはこの関数を使います。インデックス値は 0 〜 FileCount-1 です。