Chức năng Xĩa gĩi cập nhật cĩ thể được thực hiện khi gĩi cập nhật khơng cịn cần thiết trên hệ thống nữa, người sử dụng cĩ thể tiến hành xĩa để dọn dẹp hệ thống. Chức năng Tạo mới/ chỉnh sửa gĩi cập nhật cĩ luồng xử lý tương tự nhaụ
Hình 3.4: Lưu đồ chức năng Tạo mới/chỉnh sửa gĩi cập nhật Quản lý gĩi Quản lý gĩi
cập nhật
Tạo mới gĩi cập nhật Chỉnh sửa gĩi cập nhật Xĩa gĩi cập nhật Start Fold Fnew
Version (Fold) < Version (Fnew) ?
Fold UTFold Fnew UTFnew Y
N
Create Patch File
Đầu vào của mơ đun Tạo mới/ Chỉnh sửa gĩi cập nhật bao gồm file chương trình cũ và file chương trình mớị Hai file chương trình này phải cùng tồn tại trên máy chạy mơ đun.
Đầu tiên, chương trình thực hiện so sánh version của hai filẹ Việc so sánh này cĩ thể thực hiện dựa trên ngày/giờ tạo của mỗi chương trình. Nếu file Fold cĩ version mới hơn file Fnew thì chương trình đưa ra thơng báo cho người sử dụng kiểm tra lạị
Để thực hiện tạo Patch file, chương trình cần thực hiện chuyển đổi các file sang dạng mã UTF (xem bảng mã UTF8 trong phần phụ lục tham khảo).
Về kỹ thuật tạo patch file đã được trình bày trong phần trên, dưới đây sẽ mơ tả hàm cơ bản được dùng trong quá trình tạo patch filẹ
CreatePatchFile cĩ các tham số sau
BOOL CreatePatchFile(
LPCTSTRlpszPatchFile, // name of patch file
DWORDdwPatchLevel, // patch level
DWORDdwPatchOptions, // patch options
DWORD dwPatchExpires, // patch expiration
DWORDdwReserved, // reserved
LPCTSTRlpszPassword, // password
LPCTSTRlpszOldFile, // name of old file
LPCTSTRlpszNewFile, // name of new file
LPPATCHSTATUSPROClpfnCallback, // pointer to callback function
LPARAMlParam // callback function parameter
);
Giải thích các tham số LpszPatchFile
Một con trỏ chỉ ra tên của patch file được tạo rạ Nếu đã tồn tại một file với tên đĩ rồi, file sẽ được ghi đè.
DwPatchLevel
Cĩ giá trị từ 1 đến 9 xác định tốc độ và dung lượng bộ nhớ trong việc tạo patch filẹ Nếu Patch level càng cao, patch file sẽ càng nhỏ, bộ nhớ
yêu cầu càng nhỏ. Giá trị 0 là mức patch file mặc định phù hợp cho hầu hết các filẹ
Xem bảng sau:
Giá trị Mơ tả
PATCH_LEVEL_DEFAULT Một mức nén mặc định nên được lựa chọn để phù hợp với hầu hết các filẹ Giá trị này nên được sử dụng.
PATCH_LEVEL_MINIMUM Tốc độ cực đại trong việc tạo patch file, với tuỳ chọn này, patch file được tạo ra nhanh hơn, sử dụng ít bộ nhớ hơn, patch file được tạo ra cĩ kích thước lớn hơn. PATCH_LEVEL_MAXIMUMTỷ lệ nén file lớn nhất, quá trình tạo file nén lâu hơn,
tốn nhiều bộ nhớ hơn và tạo ra patch file nhỏ hơn. dwPatchOptions
Một tập các tuỳ chọn được sử dụng trong khi thực hiện quá trình tạo patch filẹ
Một trong các giá trị sau sẽ được sử dụng:
Giá trị Mơ tả
PATCH_OPTION_FIND_FILE Nếu file tham chiếu khơng được tìm thấy trong hệ thống, chương trình sẽ cố gắng tìm theo các quy tắc về đường dẫn thư mục chuẩn của Windows. Theo đĩ, thư mục hiện thời, thư mục hệ thống, và các thư mục trong biến mơi trường PATH sẽ được tìm.
PATCH_OPTION_BACKUP_FILE Tạo một file backup trên hệ thống trước khi áp dụng patch filẹ Nếu cờ này khơng được dựng, file sẽ được cập nhật ngay mà khơng cĩ bản backup.
PATCH_OPTION_COMPARE_FILETIME So sánh thời gian file đích được chỉnh sửa với thời gian file tham chiếu được chỉnh sửạ Nếu file đích cĩ thời gian chỉnh sửa muộn hơn so với file tham chiếu tại thời điểm patch đã được tạo, chương trình sẽ
đưa ra lỗi
AP_ERROR_NEWER_FILETIMẸ Điều này đảm bảo rằng file cập nhật luơn cĩ thời gian chỉnh sửa sau file tham chiếụ
PATCH_OPTION_COMPARE_VERSION So sánh phiên bản của file tham chiếu với file đích. Nếu file tham chiếu cĩ phiên bản mới hơn so với file đích tại thời điểm patch file được tạo thì chương trình sẽ đưa ra lỗi:
AP_ERROR_NEWER_VERSION. Điều này đảm bảo rằng file cập nhật luơn cĩ phiên bản mới hơn file tham chiếu
PATCH_OPTION_IGNORE_FILETIME Bỏ qua sự khác nhau về thời gian chỉnh sửa file của các file đích và file tham chiếu tại thời điểm patch file được tạo rạ
PATCH_OPTION_IGNORE_VERSION Bỏ qua sự khác nhau về phiên bản file của các file đích và file tham chiếu tại thời điểm patch file được tạo rạ
PATCH_OPTION_IGNORE_ATTRIBUTES Bỏ qua các thuộc tính file cập nhật khi patch được áp dụng trên hệ thống và thay vào đĩ, sử dụng các thuộc tính mặc định.
PATCH_OPTION_IGNORE_READONLY Bỏ qua thuộc tính read-only khi áp dụng patch filẹ Nếu file cần cập nhật cĩ thuộc tính này, nĩ sẽ được loại bỏ.
PATCH_OPTION_IGNORE_SIGNATURE Bỏ qua bất kỳ chữ ký điện tử nào được hiển thị. Nếu file cập nhật đã được ký bởi mã xác thực, chữ ký sẽ được xác thực tại thời điểm patch được áp dụng.
dwPatchExpires
Xác định số ngày patch cĩ thể được áp dụng. Khi ngày hết hạn được đạt tới, patch file sẽ khơng cịn được áp dụng nữạ Giá trị 0 thể hiện patch file khơng bao giờ hết hạn.
lpszPassword
Một con trỏ tới xâu password được dùng để bảo mật. Patch file sau khi được tạo ra, sẽ chưa được áp dụng cho đến khi password được cung cấp trong hàm ApplyPatchFilẹ
Nếu khơng dùng password, tham số này sẽ được đặt là NULL để trỏ tới một xâu rỗng.
lpszOldFile
Một con trỏ tới một xâu khơng rỗng xác định tên của file tham chiếụ
lpszNewFile
Một con trỏ tới một xâu khơng rỗng xác định tên của file cập nhật. File này sẽ được so sánh lại với file tham chiếu, bất kỳ thay đổi nào cũng sẽ được ghi trong patch filẹ
Các giá trị trả về
Nếu hàm CreatePatchFile thành cơng, nĩ sẽ trả về một giá trị khác 0. Ngược lại, nếu hàm lỗi, nĩ sẽ trả về giá trị 0. Để biết các lỗi cĩ thể cĩ, tham khảo thêm hàm GetLastError.
Chú ý
Để áp dụng patch file trên hệ thống, sử dụng hàm ApplyPatchFilẹ Khi patch level càng cao, chương trình sẽ thực hiện phân tích các file tham chiếu và file cập nhật càng lâụ Nĩ cũng sử dụng tới nhiều bộ nhớ hơn. Chú ý rằng, trong một vài trường hợp, tuỳ thuộc vào cấu trúc bên trong của file, patch level lớn nhất cĩ thể sẽ làm tăng kích thước của patch file kết quả. Vì vậy, ta nên sử dụng patch level mặc định.
Nếu cả PATCH_OPTION_COMPARE_FILETIME và PATCH_OPTION_IGNORE_FILETIME đều khơng được thiết lập, thì PATCH_OPTION_COMPARE_FILETIME là mặc định. Nếu cả
PATCH_OPTION_IGNORE_FILETIME đều được thiết lập, thì PATCH_OPTION_IGNORE_FILETIME giành quyền ưu tiên.
Nếu cả PATCH_OPTION_COMPARE_VERSION và
PATCH_OPTION_IGNORE_VERSION đều khơng được thiết lập, thì PATCH_OPTION_COMPARE_VERSION là mặc định. Nếu cả PATCH_OPTION_COMPARE_VERSION và
PATCH_OPTION_IGNORE_VERSION được thiết lập, thì PATCH_OPTION_IGNORE_VERSION giành quyền ưu tiên.
3.3.2.3.2 Quản lý danh sách chi nhánh
Để thực hiện cập nhật tự động đến từng Server chi nhánh, IP của các Server này cần được cung cấp. Chương trình upload tự động sẽ tìm đến các IP này, và tiến hành upload các patch file lên các Server đĩ. Các mơ đun chính của chức năng Quản lý danh sách chi nhánh bao gồm: