Tải bản đầy đủ (.pdf) (6 trang)

Professional Softs Links part 61 pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (80.53 KB, 6 trang )

; Set default values for variables (Cho biến các giá trị mặc định)
;
StrCpy "$PROGRAMEXE" "${EXE}" ; dùng thiết lập mặc định
StrCpy "$PROGRAMPARMS" ""
StrCpy "$SPLASHSCREEN" "enabled" ; cho phép splashscreen
;
; Kiểm tra cấu hình thư mục nào được dùng và thiết lập các biến theo
đó
;
IfFileExists "$EXEDIR\App\${APP}\$PROGRAMEXE" ""
CheckPortableDIR
StrCpy "$PROGRAMDIR" "$EXEDIR\App\${APP}"
StrCpy "$DATADIR" "$EXEDIR\Data"
Goto InitVarEnd
CheckPortableDIR:
IfFileExists
"$EXEDIR\${PNAME}\App\${APP}\$PROGRAMEXE" ""
CheckPortableAppsDIR
StrCpy "$PROGRAMDIR"
"$EXEDIR\${PNAME}\App\${APP}"
StrCpy "$DATADIR" "$EXEDIR\${PNAME}\Data"
Goto InitVarEnd
CheckPortableAppsDIR:
IfFileExists
"$EXEDIR\PortableApps\${PNAME}\App\${APP}\$PROGRAMEXE" ""
CheckAppsDIR
StrCpy "$PROGRAMDIR"
"$EXEDIR\PortableApps\${PNAME}\App\${APP}"
StrCpy "$DATADIR"
"$EXEDIR\PortableApps\${PNAME}\Data"
Goto InitVarEnd


CheckAppsDIR:
IfFileExists
"$EXEDIR\Apps\${PNAME}\${APP}\$PROGRAMEXE" "" NoDIR
StrCpy "$PROGRAMDIR"
"$EXEDIR\Apps\${PNAME}\${APP}"
StrCpy "$DATADIR" "$EXEDIR\Data\${PNAME}"
Goto InitVarEnd
NoDIR:
;
; Không tìm thấy cấu hình thư mục được cho phép nào
;
MessageBox MB_OK|MB_ICONEXCLAMATION
`$PROGRAMEXE không tìm thấy. Xin kiểm tra cấu hình của bạn`
Abort ; kết thúc launcher
InitVarEnd: ;kết thúc hàm
FunctionEnd

;
******************************************************************
********
; * Hàm: Làm việc với các khóa hoặc cây registry (backup, restore, delete)
;
******************************************************************
********
Function DoAction
StrCmp "$ACTIONPARAMETERS" "" Sau vòng lặp ; nếu không có tham
số nào thì thôi ngay
StrCpy "$R8" "0" ; reset bộ đếm
StrCpy "$R2" "$ACTION" 6 # ; chỉ lấy 6 ký tự đầu của hành động đc yêu
cầu

StrCmp "$R2" "Backup" "" GoOn ; sao lưu thư mục yêu cầu
IfFileExists "$ACTIONDIRECTORY\*.*" GoOn ; tạo thư mục sao lưu nếu
nó không tồn tại
CreateDirectory $ACTIONDIRECTORY
GoOn:
StrCpy "$R0" "$ACTIONPARAMETERS" ; chép hằng số để làm việc đăng

Loop:
;
; Lấy tham số đơn ra khỏi danh sách
;
StrCmp "$R0" "" Sau vòng lặp ; không phân tích registry, khi không
có khóa nào được đưa ra
IntOp $R8 $R8 + 1 ; tăng bộ đếm
${WordFind} "$R0" "||" "+01" $R9 ; lưu tham số đầu tiên để đăng ký
${WordFind} "$R0" "||" "+02*}" $R0 ; xóa phần đầu tiên từ giá trị đã
lưu
StrCmp "$R0" "$R9" LastLoop ; nếu các giá trị đăng ký trùng nhau ->
không còn delimiters
Goto DoWork ; không xóa danh sách giá trị
LastLoop:
StrCpy "$R0" "" ; Nếu không có delimiter sẵn có thì làm trống rỗng
các biến làm việc
;
;Quyết định làm gì với tham số
;
DoWork:
StrCpy "$R2" "$ACTION" "" -4 # ; lấy 7 ký tự cuối của biến hoạt
động
!ifdef REGKEYS

StrCmp "$R2" "Keys" DoWorkRegistry ; hành động phải được
thực hiện với registry
!endif
!ifdef SETTINGSFILES
StrCmp "$R2" "File" DoWorkFiles ; hành động phải được thực
hiện với file
!endif
!ifdef SETTINGSDIRS
StrCmp "$R2" "Dirs" DoWorkDirectory ; hành động phải được
thực hiện với các thư mục
!endif
Goto Continue ; có gì đó không xác định
;
; Thao tác với các khóa registry
;
!ifdef REGKEYS
DoWorkRegistry:
StrCmp "$ACTION" "BackupKeys" BackupRegistryKey
; sao lưu khóa registry
StrCmp "$ACTION" "RestoreKeys" RestoreRegistryKey
; phục hồi khóa registry, VD ghi chúng vào registry
StrCmp "$ACTION" "DeleteKeys" DeleteRegistryKey ;
Xóa các khóa registry
Goto Continue ; có gì đó không xác định
BackupRegistryKey:
${registry::KeyExists} "$R9" $R7 ; kiểm tra khóa
registry có tồn tại hay không
StrCmp "$R7" "0" 0 Continue ; khóa registry không tồn
tại, không lưu lại gì cả
${registry::SaveKey} "$R9"

"$ACTIONDIRECTORY\RegKey$R8.reg" "/G=1" $R7 ; Sao lưu khóa registry
Sleep 50
Goto Continue
RestoreRegistryKey:
IfFileExists "$ACTIONDIRECTORY\RegKey$R8.reg"
0 Continue ; chỉ phục hồi nếu 1 file registry tồn tại
${registry::RestoreKey}
"$ACTIONDIRECTORY\RegKey$R8.reg" $R7 ; Phục hồi các khóa registry đã
lưu
Sleep 50
Goto Continue
DeleteRegistryKey:
${registry::DeleteKey} "$R9" $R7 ; Xóa khóa registry
Sleep 50
Goto Continue
!endif
;
; Thao tác với file
;
!ifdef SETTINGSFILES
DoWorkFiles:
StrCmp "$ACTION" "BackupFile" BackupFile ; thực
hiện sao lưu file
StrCmp "$ACTION" "RestoreFile" RestoreFile ; phục
hồi các file đã lưu, VD ghi nó vào máy host
StrCmp "$ACTION" "DeleteFile" DeleteFile ; xóa file từ
host computer
BackupFile:
IfFileExists "$R9" 0 Continue ; kiểm tra xem file có tồn
tại hay không

CopyFiles "$R9" "$ACTIONDIRECTORY\File$R8.dat"
; sao lưu file
Goto Continue
RestoreFile:
IfFileExists "$ACTIONDIRECTORY\File$R8.dat" 0
Continue ; chỉ phục hồi khi file có sẵn
CopyFiles "$ACTIONDIRECTORY\File$R8.dat" "$R9"
; phục hồi file
Goto Continue
DeleteFile:
Delete "$R9" ; xóa file
Goto Continue
!endif
;
; Thao tác với thư mục
;
!ifdef SETTINGSDIRS
DoWorkDirectory:
StrCmp "$ACTION" "BackupDirs" BackupDirectory ;
sao lưu thư mục
StrCmp "$ACTION" "RestoreDirs" RestoreDirectory ;
phục hồi thư mục đã sao lưu, VD ghi nó vào máy host
StrCmp "$ACTION" "DeleteDirs" DeleteDirectory ; xóa
thư mục từ máy host
BackupDirectory:
IfFileExists "$R9\*.*" 0 Continue ; kiểm tra xem thư
mục nguồn có tồn tại hay không
IfFileExists "$ACTIONDIRECTORY\Dir$R8.dat" +2 0 ;
thư mục đích có tồn tại hay không?
CreateDirectory "$ACTIONDIRECTORY\Dir$R8.dat" ;

tạo thư mục đích
CopyFiles "$R9\*.*"
"$ACTIONDIRECTORY\Dir$R8.dat" ; sao lưu thư mục
Goto Continue
RestoreDirectory:
IfFileExists "$ACTIONDIRECTORY\Dir$R8.dat\*.*" 0
Continue ; kiểm tra xem các sao lưu có tồn tại không
IfFileExists "$R9\*.*" +2 0 ; thư mục đích có tồn tại
không
CreateDirectory "$R9" ; create target directory
CopyFiles "$ACTIONDIRECTORY\Dir$R8.dat\*.*"
"$R9" ; phục hồi các thư mục
Goto Continue
DeleteDirectory:
RMDir "/r" "$R9" ; xóa thư mục
Goto Continue
!endif
;
; End of Loop

×