; --- Call CheckEXE ; --- ; Hiển thị Splashscreen nếu có sẵn ; --- !ifdef SPLASHIMAGE StrCmp "$SPLASHSCREEN" "enabled" 0 NoSplash InitPluginsDir File /oname=$PLUGINSDIR\splash.jpg "${SPL
Trang 1; - 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
Trang 2; -
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
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
Trang 3Call 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
Trang 4StrCpy "$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
Trang 5StrCpy "$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
Trang 6Sau đó là phần mềm Hm NIS Editor 2.0.3 tại đây