88 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// ***** BEGIN LICENSE BLOCK *****
 | 
						|
// * Version: MPL 1.1
 | 
						|
// *
 | 
						|
// * The contents of this file are subject to the Mozilla Public License Version
 | 
						|
// * 1.1 (the "License"); you may not use this file except in compliance with
 | 
						|
// * the License. You may obtain a copy of the License at
 | 
						|
// * http://www.mozilla.org/MPL/
 | 
						|
// *
 | 
						|
// * Software distributed under the License is distributed on an "AS IS" basis,
 | 
						|
// * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 | 
						|
// * for the specific language governing rights and limitations under the
 | 
						|
// * License.
 | 
						|
// *
 | 
						|
// * The Original Code is TurboPower Abbrevia
 | 
						|
// *
 | 
						|
// * The Initial Developer of the Original Code is
 | 
						|
// * TurboPower Software
 | 
						|
// *
 | 
						|
// * Portions created by the Initial Developer are Copyright (C) 1997-2002
 | 
						|
// * the Initial Developer. All Rights Reserved.
 | 
						|
// *
 | 
						|
// * Contributor(s):
 | 
						|
// *
 | 
						|
// * ***** END LICENSE BLOCK *****
 | 
						|
/*********************************************************/
 | 
						|
/*                      selfex.cpp                       */
 | 
						|
/*********************************************************/
 | 
						|
 | 
						|
/* This program creates a ZIP stub called SELFEX.EXE. This
 | 
						|
stub can then be used to create self-extracting ZIP files.
 | 
						|
For more information on self-extracting ZIPs and ZIP stubs see
 | 
						|
page 112 in the Abbrevia manual. */
 | 
						|
 | 
						|
 | 
						|
#include <condefs.h>
 | 
						|
#include <stdio.h>
 | 
						|
#include "AbArcTyp.hpp"
 | 
						|
#include "AbUnzPrc.hpp"
 | 
						|
#include "AbUtils.hpp"
 | 
						|
#include "AbZipTyp.hpp"
 | 
						|
 | 
						|
#pragma hdrstop
 | 
						|
 | 
						|
class THelper : public TObject {
 | 
						|
  public:
 | 
						|
    __fastcall THelper() {}
 | 
						|
    void __fastcall UnzipProc(TObject* Sender,
 | 
						|
      TAbArchiveItem* Item, AnsiString NewName);
 | 
						|
};
 | 
						|
 | 
						|
void __fastcall THelper::UnzipProc(TObject* Sender, TAbArchiveItem* Item, AnsiString NewName)
 | 
						|
{
 | 
						|
  AbUnzip( Sender, dynamic_cast<TAbZipItem *>(Item), NewName );
 | 
						|
}
 | 
						|
 | 
						|
//---------------------------------------------------------------------------
 | 
						|
USERES("selfex.res");
 | 
						|
//---------------------------------------------------------------------------
 | 
						|
#pragma link "AbArcTyp"
 | 
						|
#pragma link "abutils"
 | 
						|
#pragma link "AbUnzPrc"
 | 
						|
#pragma link "AbZipTyp"
 | 
						|
//---------------------------------------------------------------------------
 | 
						|
 | 
						|
#pragma argsused
 | 
						|
int main(int argc, char **argv)
 | 
						|
{
 | 
						|
  TAbZipArchive* ZipArchive;
 | 
						|
  THelper* Helper = new THelper;
 | 
						|
  printf("Abbrevia Self Extracting Archive");
 | 
						|
  ZipArchive = new TAbZipArchive(
 | 
						|
    ParamStr( 0 ), fmOpenRead | fmShareDenyNone);
 | 
						|
  SetCurrentDirectory(ExtractFilePath(ParamStr(0)).c_str());
 | 
						|
  try {
 | 
						|
    ZipArchive->Load();
 | 
						|
    ZipArchive->ExtractHelper = Helper->UnzipProc;
 | 
						|
    ZipArchive->ExtractFiles("*.*");
 | 
						|
  }
 | 
						|
  catch (...) {
 | 
						|
    delete Helper;
 | 
						|
    delete ZipArchive;
 | 
						|
    return 0;
 | 
						|
  }
 | 
						|
  delete Helper;
 | 
						|
  delete ZipArchive;
 | 
						|
  return 0;
 | 
						|
}
 | 
						|
 
 |