; Continue: Goto Loop AfterLoop: FunctionEnd ; ****************************************************************** ******** ; * Hàm: Kiểm tra xem file EXE tồn tại có được chạy lần thứ 2 hay không ; ****************************************************************** ******** Function CheckEXE IfFileExists "$PROGRAMDIR\$PROGRAMEXE" FoundEXE ; file EXE không ở thư mục mong đợi MessageBox MB_OK|MB_ICONEXCLAMATION `$PROGRAMEXE không tìm thấy. kiểm tra lại cấu hình của bạn!` Abort FoundEXE: ; kiểm tra xem đã chạy hay chưa và thiết lập biến FindProcDLL::FindProc "$PROGRAMEXE" StrCmp $R0 "1" "" EndEXE StrCpy $SECONDLAUNCH "true" EndEXE: FunctionEnd ; ****************************************************************** ******** ; * Main section (Phần chính) ; ****************************************************************** ******** Section "Main" ; ; Khởi chạy các biến, đọc file INI v.v… ; Call InitVariables ; ; Thực hiện kiểm tra EXE ; Call CheckEXE ; ; Hiển thị Splashscreen nếu có sẵn ; !ifdef SPLASHIMAGE StrCmp "$SPLASHSCREEN" "enabled" 0 NoSplash InitPluginsDir File /oname=$PLUGINSDIR\splash.jpg "${SPLASHIMAGE}" newadvsplash::show /NOUNLOAD 2500 200 200 -1 /L $PLUGINSDIR\splash.jpg NoSplash: !endif StrCmp $SECONDLAUNCH "true" SimplyStartProgram ; ; Sao lưu những khóa registry tồn tại, thay thế bằng các khóa registry đã lưu ; !ifdef REGKEYS StrCpy "$ACTIONPARAMETERS" "${REGKEYS}" ; bàn giao danh sách tham số StrCpy "$ACTIONDIRECTORY" "$DATADIR\RegistryBackup" ; xác định nơi sao lưu các khóa StrCpy "$ACTION" "BackupKeys" ; sao lưu các khóa registry tồn tại Call DoAction ; thực hiện hành động ; StrCpy "$ACTION" "DeleteKeys" ; xóa các khóa registry tồn tại ; Call DoAction StrCpy "$ACTIONDIRECTORY" "$DATADIR\Registry" ; xác định các khóa local ở đâu StrCpy "$ACTION" "RestoreKeys" ;phục hồi các khóa đã lưu Call DoAction ; thực hiện hành động !endif ; ; Sao lưu những cái đã có, thay thế bằng các file thiết lập đã lưu ; !ifdef SETTINGSFILES StrCpy "$ACTIONPARAMETERS" "${SETTINGSFILES}" ; bàn giao danh sách tham số StrCpy "$ACTIONDIRECTORY" "$DATADIR\SettingsBackup" ; xác định nơi lưu file StrCpy "$ACTION" "BackupFile" ; xác định hành động Call DoAction ; thực hiện hành động StrCpy "$ACTIONDIRECTORY" "$DATADIR\Settings" ; xác định nơi chứa các file local StrCpy "$ACTION" "RestoreFile" ; xác định hành động Call DoAction ; thực hiện hành động !endif ; ; Sao lưu các thư mục thiết lập sẵn có ; !ifdef SETTINGSDIRS StrCpy "$ACTIONPARAMETERS" "${SETTINGSDIRS}" ; bàn giao danh sách tham số StrCpy "$ACTIONDIRECTORY" "$DATADIR\SettingsBackup" ; xác định nơi lưu các thư mục StrCpy "$ACTION" "BackupDirs" ; xác định hành động Call DoAction ; thực hiện hành động StrCpy "$ACTIONDIRECTORY" "$DATADIR\Settings" ; xác định các thư mục Local ở đâu StrCpy "$ACTION" "RestoreDirs" ; xác định hành động Call DoAction ; thực hiện hành động !endif ; ; Các thay đổi khác trước khi chạy chương trình ; Call Init ; ; Chạy chương trình ; ${GetParameters} $R0 ; thu được các tham số dòng lệnh cuối cùng ExecWait "$PROGRAMDIR\$PROGRAMEXE $PROGRAMPARMS $R0" ; chạy chương trình ; ; Các hành động dọn sạch khác sau khi chương trình đã chạy ; Call CleanUp ; ; Sao lưu và phục hồi hoặc dọn sạch các thư mục thiết lập ; !ifdef SETTINGSDIRS StrCpy "$ACTIONPARAMETERS" "${SETTINGSDIRS}" ; bàn giao danh sách tham số StrCpy "$ACTIONDIRECTORY" "$DATADIR\Settings" ; xác định các thư mục local ở đâu StrCpy "$ACTION" "BackupDirs" ; xác định hành động Call DoAction ; thực hiện hành động StrCpy "$ACTION" "DeleteDirs" ; xóa các thư mục trên máy host Call DoAction ; thực hiện hành động StrCpy "$ACTIONDIRECTORY" "$DATADIR\SettingsBackup" ; xác định nơi lưu thư mục StrCpy "$ACTION" "RestoreDirs" ; xác định hành động Call DoAction ; thực hiện hành động !endif ; ; Sao lưu và phục hồi hoặc dọn sạch các file thiết lập ; !ifdef SETTINGSFILES StrCpy "$ACTIONPARAMETERS" "${SETTINGSFILES}" ; bàn giao danh sách tham số StrCpy "$ACTIONDIRECTORY" "$DATADIR\Settings" ; xác định các file local ở đâu StrCpy "$ACTION" "BackupFile" ; xác định hành động Call DoAction ; thực hiện hành động StrCpy "$ACTION" "DeleteFile" ; xóa các file trong máy host Call DoAction ; thực hiện hành động StrCpy "$ACTIONDIRECTORY" "$DATADIR\SettingsBackup" ; xác định nơi lưu thư mục StrCpy "$ACTION" "RestoreFile" ; xác định hành động Call DoAction ; thực hiện hành động !endif ; ; sao lưu và phục hồi hoặc dọn sạch các khóa registry ; !ifdef REGKEYS StrCpy "$ACTIONPARAMETERS" "${REGKEYS}" ; bàn giao danh sách tham số StrCpy "$ACTIONDIRECTORY" "$DATADIR\Registry" ; xác định các khóa local ở đâu StrCpy "$ACTION" "BackupKeys" ; sao lưu các khóa registry sẵn có Call DoAction ; thực hiện hành động StrCpy "$ACTION" "DeleteKeys" ; xóa các khóa registry trong máy host Call DoAction ; thực hiện hành động sleep 500 ; để cho việc xóa các khóa registry kết thúc StrCpy "$ACTIONDIRECTORY" "$DATADIR\RegistryBackup" ; xác định nơi sao lưu các khóa StrCpy "$ACTION" "RestoreKeys" ;phục hồi các khóa đã lưu Call DoAction ; thực hiện hành động sleep 1000 ; để cho việc ghi vào registry kết thúc (cần thiết trước khi xóa file lưu trữ) !endif ${registry::Unload} ; ; xóa các file sao lưu ; RMDir "/r" "$DATADIR\SettingsBackup" RMDir "/r" "$DATADIR\RegistryBackup" Goto EndOfCode ; ; chạy ứng dụng trực tiếp mà không làm gì khác, giống như nó đã đang chạy rồi ; SimplyStartProgram: ${GetParameters} $R0 ; lấy các tham số dòng lệnh cuối cùng Exec "$PROGRAMDIR\$PROGRAMEXE $PROGRAMPARMS $R0" ; chạy chương trình ${registry::Unload} EndOfCode: SectionEnd Download bài viết ở đây: http://rapidshare.com/files/14979700/Cong_thuc_mot_chuong_trinh_Portable_mau .mht Dịch bởi freewarez ( www.chongthamnhung.com ) [TUT]Tạo file cài đặt với NSIS ~> Theo yêu cầu của một thành viên trong team(bác tuanphong thì phải ^^), tui viết một bài Tutorial về cách tạo một file cài đặt dùng phần mềm NSIS. Đầu tiên là bộ cài, tải bản NSIS 2.0.3 tại đây Sau đó là phần mềm Hm NIS Editor 2.0.3 tại đây . SectionEnd Download bài viết ở đây: http://rapidshare.com/files/14979700/Cong_thuc_mot_chuong_trinh _Portable_ mau .mht Dịch bởi freewarez ( www.chongthamnhung.com ) [TUT]Tạo file cài đặt với NSIS