// PatchMaker.h: interface for the CPatchMaker class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_PATCHMAKER_H__6D7C0314_CD51_4721_AC77_D3CFB22F57F7__INCLUDED_) #define AFX_PATCHMAKER_H__6D7C0314_CD51_4721_AC77_D3CFB22F57F7__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "ZipArchive.h" #include "PatchInfoList.h" #include "Patch_Util.h" #include ////////////////////////////////////////////////////////////////////////// enum FILE_LOCATION_TYPE { FILE_NONE, FILE_ON_FTP, FILE_ON_HTTP, FILE_ON_LOCAL }; ////////////////////////////////////////////////////////////////////////// class CPatchMaker { public: CPatchMaker(); virtual ~CPatchMaker(); bool Go( CEdit* pEditOutput ); enum PATCHMAKER_STATE { PMS_IDLE, PMS_LOAD_SERVER_PATCHINFO_LIST, PMS_BUILD_LOCAL_PATCHINFO_LIST, PMS_COLLECT_UPDATE_FILE_LIST, PMS_UPDATE_PACKAGE, PMS_UPDATE_PATCHINFO }; PATCHMAKER_STATE GetState() { return m_PatchmakerState; } void SetPackageFilePath(const char* sz) { m_strPackageFilePath = sz; } void SetLocalFilePath(const char* sz) { m_strLocalFilePath = sz; } void SetDestFilePath(const char* sz) { m_strDestFilePath = sz; } void SetSourceType(FILE_LOCATION_TYPE tp) { m_SourceType = tp; } void SetDestType(FILE_LOCATION_TYPE tp) { m_DestType = tp; } void SetPackageSize(DWORD dw) { m_dwPackageMaxSize = dw; } void SetUpdateVersion(DWORD dw) { m_dwUpdateVersion = dw; } void SetFTPServerAddr(const char* sz) { m_strFTPServerAddr = sz; } void SetFTPAccount(const char* sz) { m_strFTPAccount = sz; } void SetFTPPassword(const char* sz) { m_strFTPPassword = sz; } void SetFTPPort(int n) { m_nFTPPort = n; } void SetPassiveMode(BOOL b) { m_bPassiveMode = b; } void SetPartialFileCompare(bool b) { m_bPartialFileCompare = b; } void SetCheckNoticeFolder(bool b) { m_bCheckNoticeFolder = b; } int GetPatchInfoVersion(); protected: CZipArchive m_ZipArc; CArray m_arrIndexToUpdateLocalFile; CPatchInfoList m_LocalPatchInfo; CPatchInfoList m_ServerPatchInfo; std::map< PTR_STRING, int, PTR_STRING_LESS > m_mapFileName2ServerListIndex; // °¢°¢ÀÇ ÆÐ½ºµé. ¹Ýµå½Ã path seperator( \ ) ·Î ³¡³ª¾ß ÇÑ´Ù. // -> CPatchMaker Ŭ·¡½º ³»¿¡¼­ seperator ÀÚµ¿ Ãß°¡·Î º¯°æ CString m_strPackageFilePath; CString m_strLocalFilePath; CString m_strDestFilePath; FILE_LOCATION_TYPE m_SourceType; FILE_LOCATION_TYPE m_DestType; CStringArray m_astrFileNameWithSubDirExclusionList; // Á¦¿Ü ÆÄÀÏ Áß Æ¯Á¤ ¼­ºêÆú´õ»ó¿¡ À§Ä¡ÇÏ´Â ÆÄÀÏ CStringArray m_astrFileNameExclusionList; // Á¦¿Ü ÆÄÀÏ Áß ¼­ºêÆú´õ¿Í´Â »ó°ü¾øÀÌ ÆÄÀÏÀ̸§¸¸À¸·Î ÆÇº°ÇÏ´Â°Í // . .. °ú °°Àº µð·ºÅ丮¸í, vssver.scc °°Àº ÇÊ¿ä¾ø´Â ÆÄÀϵé CStringArray m_astrSubDirExclusionList; long m_dwUpdateVersion; // ¾÷µ¥ÀÌÆ® ÇÒ »õ ¹öÀü CString m_strFTPServerAddr; CString m_strFTPAccount; CString m_strFTPPassword; int m_nFTPPort; BOOL m_bPassiveMode; bool m_bPartialFileCompare; bool m_bCheckNoticeFolder; CString m_strCurrentNewPackageFileName; DWORD m_dwPackageMaxSize; PATCHMAKER_STATE m_PatchmakerState; CString m_strStateInfoString; bool CheckValidity( CEdit* pEditOutput ); bool LoadServerPatchInfoList(); bool BuildLocalPatchInfoList(); bool CollectUpdateFileList(); bool UpdatePackage(); bool UpdatePatchInfo(); const char* GetNextPackageFileName(); bool IsExcludedFile( const char* szFileName ); bool IsExcludedFileWithSubDir( const char* szFileNameWithSubDir ); bool IsExcludedSubDir( const char* szSubDir ); bool IsSoleFileWithSubDir( const char* szFileNameWithSubDir ); }; #endif // !defined(AFX_PATCHMAKER_H__6D7C0314_CD51_4721_AC77_D3CFB22F57F7__INCLUDED_)