我做的NSIS程序

outfile "LoadMaster_Enterprise_Multilanguage_Setup.exe"
;!include "D:\Program Files\NSIS\Contrib\Modern UI\system.nsh"
!include "${NSISDIR}\Include\LogicLib.nsh"
!define PRODUCT_NAME "LoadMaster"
!define PRODUCT_VERSION "4.0"
!define PRODUCT_WEB_SITE "http://www.zhuangxiang.com"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
!define MUI_WELCOMEFINISHPAGE_BITMAP "F:\tub\pic.bmp"
!include "MUI2.nsh"
!include WordFunc.nsh

 

SetCompressor lzma
XPStyle on
!insertmacro MUI_PAGE_WELCOME

!insertmacro MUI_PAGE_LICENSE "$(ln)"

!insertmacro MUI_PAGE_DIRECTORY

!insertmacro MUI_PAGE_INSTFILES

!insertmacro MUI_PAGE_FINISH

!insertmacro MUI_UNPAGE_INSTFILES

!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "SimpChinese"
!insertmacro MUI_LANGUAGE "TradChinese"


icon f:\tub\LD.ico
uninstallicon "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"


InstallDir "$programfiles\LoadMaster4.0"

BrandingText    "http://www.zhuangxiang.com/"

Name $(Name)
LangString Name ${LANG_ENGLISH} "LoadMaster_Enterprise"
LangString Name ${LANG_SIMPCHINESE}  "装箱大师企业版"
LangString name 1028 "裝箱大師企業版"
ShowInstDetails show
ShowUnInstDetails show

Section "MainSection"
setoutpath  $INSTDIR
;file /r  "f:\abc\*.*"
file /r  "f:\workspace2\*.*"

createdirectory   $SYSDIR\vcredist_x86
setoutpath  $SYSDIR\vcredist_x86
ExecWait '"$INSTDIR\vcredist_x86.exe"'
delete "$instdir\vcredist_x86.exe"
SectionEnd

function .onInit

System::Call "Kernel32::GetSystemDefaultLangID(v ..) i .s"
  Pop $3
  ${if} $3 = 2052
    call cn
  ${endif}
  ${if} $3 = 1033
  call en
   ${endif}
  ${if} $3 = 1028
  call tn
  ${endif}
  
  Push $0
   Push $1
System::Call "mscoree::GetCORVersion(w .r0, i ${NSIS_MAX_STRLEN}, *i) i .r1 ?u"
${if} $language = 2052
StrCmp $0 "" 0 +4
Messagebox MB_OK "安装程序检测到您计算机上没有安装.Net Framework 2.0,您必须先安装.Net Framework 2.0 或以上版本,才能安装运行本软件! "
ExecShell "open" "http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=zh-cn"
abort

${endif}
${if} $language = 1028
strcmp $0 "" 0 +4
Messagebox MB_OK "安裝程序檢測到您計算機上沒有安裝.Net Framework 2.0,您必須先安裝.Net Framework 2.0 或以上版本,才能安裝運行本軟件! "
ExecShell "open" "http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=zh-cn"
abort
${endif}
${if} $language = 1033
strcmp $0 "" 0 +4
Messagebox MB_OK "Detecting that you have not installed .Net Framework 2.0 on your computer, you must first install .Net Framework 2.0 or above, in order to run the installation of this software!"
ExecShell "open" "http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=zh-cn"
abort
${endif}

StrCpy $R0 $0 "" 1
intop $8 $r0 - 2
${if} $8 < 0
${if} $3 = 2052
Messagebox MB_ok "安装程序检测到您计算机上的.Net Framework 版本低于2.0,您的版本是$r0 ,您必须先安装.Net Framework 2.0 或以上版本,才能安装运行本软件!"
ExecShell "open" "http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=zh-cn"
abort
${endif}
${if} $3 = 1028
Messagebox MB_ok "安裝程序檢測到您計算機上的.Net Framework 版本低於2.0,您的版本是$r0 ,您必須先安裝.Net Framework 2.0 或以上版本,才能安裝運行本軟件!"
ExecShell "open" "http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=zh-cn"
abort
${endif}
${if} $3 = 1033
Messagebox MB_ok "Detecting your computer .Net Framework version lower than 2.0, your version is $r0, you must first install .Net Framework 2.0 or above, in order to run the installation of this software!"
ExecShell "open" "http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=zh-cn"
abort
${endif}
${endif}
FunctionEnd

function cn

  Push ""
  Push ${LANG_ENGLISH}
  push "English"
  push ${LANG_TRADCHINESE}
  Push "繁體中文"
  Push ${LANG_SIMPCHINESE}
  Push "简体中文"
  Push A
  LangDLL::LangDialog " 安装语言"   "请选择安装语言与软件界面"
  Pop $LANGUAGE
  StrCmp $LANGUAGE "cancel" 0 +2
    Abort

functionend
function en
  Push ""
  Push ${LANG_ENGLISH}
  push "English"
  push ${LANG_TRADCHINESE}
  Push "繁體中文"
  Push ${LANG_SIMPCHINESE}
  Push "简体中文"
  Push A
  LangDLL::LangDialog "Installer Language" "Please select a language and software interface language "
  Pop $LANGUAGE
  StrCmp $LANGUAGE "cancel" 0 +2
    Abort

functionend
function tn
  Push ""
  Push ${LANG_ENGLISH}
  push "English"
  push ${LANG_TRADCHINESE}
  Push "繁體中文"
  Push ${LANG_SIMPCHINESE}
  Push "简体中文"
  Push A
  LangDLL::LangDialog " 安裝語言"   "請選擇安裝語言與軟件界面"
  Pop $LANGUAGE
  strcpy $0 $language
   StrCmp $LANGUAGE "cancel" 0 +2
    Abort

functionend


section writeregedit
setoutpath $INSTDIR
 WriteRegStr HKLM   software\LoadMaster version "${PRODUCT_VERSION} "
 writeregstr HKLM   software\LoadMaster path "$INSTDIR"
 writeregstr HKLM   software\LoadMaster language "$LANGUAGE"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(Name)"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\LoadMasterMain.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
sectionend

LicenseLangString ln ${LANG_ENGLISH} f:\enlicense2.txt
LicenseLangString ln ${LANG_TRADCHINESE} f:\tnlicense2.txt
LicenseLangString ln ${LANG_SIMPCHINESE} f:\cnlicense2.txt
  

Section -AdditionalIcons
${switch} $language
${Case}  1033
  SetOutPath "$INSTDIR"
  file "f:\en\LoadMasterMain.exe.config"
  WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
  CreateDirectory "$SMPROGRAMS\LoadMaster"
  createshortcut "$SMPROGRAMS\LoadMaster\LoadMaster4.0.lnk" "$instdir\LoadMasterMain.exe"
  CreateShortCut "$SMPROGRAMS\LoadMaster\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
  createshortcut "$SMPROGRAMS\LoadMaster\Manual.lnk" "$instdir\Manual.chm"
  CreateShortCut "$SMPROGRAMS\LoadMaster\Uninstall.lnk" "$INSTDIR\uninst.exe"
  createshortcut "$desktop\LoadMaster4.0.lnk" "$instdir\LoadMasterMain.exe"
  ${Break}
${Case} 2052
  SetOutPath "$INSTDIR"
  file "f:\cn\LoadMasterMain.exe.config"
  WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
  CreateDirectory "$SMPROGRAMS\装箱大师企业版"
  CreateShortCut "$SMPROGRAMS\装箱大师企业版\装箱大师官方网站.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
  CreateShortCut "$SMPROGRAMS\装箱大师企业版\装箱大师企业版卸载.lnk" "$INSTDIR\uninst.exe"
  CreateShortCut "$SMPROGRAMS\装箱大师企业版\装箱大师企业版帮助文档.lnk" "$INSTDIR\Manual.chm"
  CreateShortCut "$SMPROGRAMS\装箱大师企业版\装箱大师企业版4.0.lnk" "$INSTDIR\LoadMasterMain.exe"
  CreateShortCut "$DESKTOP\装箱大师企业版4.0.lnk" "$INSTDIR\LoadMasterMain.exe"
  ${Break}
${Case} 1028
 SetOutPath "$INSTDIR"
 file "f:\tn\LoadMasterMain.exe.config"
  WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
  CreateDirectory "$SMPROGRAMS\裝箱大師企業版"
  CreateShortCut "$SMPROGRAMS\裝箱大師企業版\裝箱大師官方網站.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
  CreateShortCut "$SMPROGRAMS\裝箱大師企業版\裝箱大師企業版卸載.lnk" "$INSTDIR\uninst.exe"
  CreateShortCut "$SMPROGRAMS\裝箱大師企業版\裝箱大師企業版幫助文檔.lnk" "$INSTDIR\Manual.chm"
  createshortcut "$smprograms\裝箱大師企業版\裝箱大師企業版4.0.lnk" "$instdir\LoadMasterMain.exe"
  createshortcut "$desktop\裝箱大師企業版4.0.lnk" "$instdir\LoadMasterMain.exe"
${Break}

${EndSwitch}
SectionEnd


section woriteunistallreg
  writeuninstaller  "$instdir\uninst.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(Name)"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
sectionend


section uninstall
 deleteregkey  ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
 deleteregkey  hklm  software\LoadMaster\path
 deleteregkey HKLM   software\LoadMaster\version
 
; messagebox MB_OK "$5"

${if} $5 = 2052

  Delete "$INSTDIR\${PRODUCT_NAME}.url"
  Delete "$INSTDIR\uninst.exe"
  Delete "$INSTDIR\templet.zh-CHN.xls"
  Delete "$INSTDIR\templet.zh-CN.xls"
  Delete "$INSTDIR\templet.xls"
  Delete "$INSTDIR\resources.cfg"
  Delete "$INSTDIR\Manual.chm"
  Delete "$INSTDIR\Mogre.dll"
  Delete "$INSTDIR\MOIS.dll"
  Delete "$INSTDIR\Ogre.log"
  Delete "$INSTDIR\OgreMain.dll"
  Delete "$INSTDIR\OIS.dll"
  Delete "$INSTDIR\plugins.cfg"
  delete "$instdir\Plugin_OctreeSceneManager.dll"
  Delete "$INSTDIR\RenderSystem_Direct3D9.dll"
  Delete "$INSTDIR\RenderSystem_GL.dll"
  delete "$instdir\D3DX9_39.dll"
  delete "$instdir\LoadMasterUIControlLibrary.dll"
  delete "$instdir\ToolsForDataTransfer.exe"
  delete "$instdir\装箱大师新增功能.txt"
  Delete "$INSTDIR\Csla.dll"
  Delete "$INSTDIR\database.mdb"
  Delete "$INSTDIR\GEARS.ico"
  Delete "$INSTDIR\HID.exe"
  Delete "$INSTDIR\LoadMasterMain.exe"
  Delete "$INSTDIR\LoadMasterMain.exe.config"
  Delete "$INSTDIR\cg.dll"
  Delete "$INSTDIR\csgl.dll"
  Delete "$INSTDIR\csgl.native.dll"
  RMDir /r  "$INSTDIR\Media\*.*"
  RMDir /r  "$INSTDIR\zh-CN\*.*"
  RMDir /r  "$INSTDIR\zh-HK\*.*"
 
  Delete "$SMPROGRAMS\装箱大师企业版\装箱大师企业版卸载.lnk"
  Delete "$SMPROGRAMS\装箱大师企业版\装箱大师官方网站.lnk"
  Delete "$SMPROGRAMS\装箱大师企业版\装箱大师企业版帮助文档.lnk"
  Delete "$DESKTOP\装箱大师企业版4.0.lnk"
  Delete "$SMPROGRAMS\装箱大师企业版\装箱大师企业版4.0.lnk"
  RMDir  "$INSTDIR"
  RMDir "$SMPROGRAMS\装箱大师企业版"
 SetAutoClose true
${endif}

${if} $5 = 1033
  Delete "$INSTDIR\${PRODUCT_NAME}.url"
  Delete "$INSTDIR\uninst.exe"
  Delete "$INSTDIR\templet.zh-CHN.xls"
  Delete "$INSTDIR\templet.zh-CN.xls"
  Delete "$INSTDIR\templet.xls"
  Delete "$INSTDIR\resources.cfg"
  Delete "$INSTDIR\Manual.chm"
  Delete "$INSTDIR\Mogre.dll"
  Delete "$INSTDIR\MOIS.dll"
  Delete "$INSTDIR\Ogre.log"
  Delete "$INSTDIR\OgreMain.dll"
  Delete "$INSTDIR\OIS.dll"
  Delete "$INSTDIR\plugins.cfg"
  delete "$instdir\Plugin_OctreeSceneManager.dll"
  Delete "$INSTDIR\RenderSystem_Direct3D9.dll"
  Delete "$INSTDIR\RenderSystem_GL.dll"
  delete "$instdir\D3DX9_39.dll"
  delete "$instdir\LoadMasterUIControlLibrary.dll"
  delete "$instdir\ToolsForDataTransfer.exe"
  delete "$instdir\装箱大师新增功能.txt"
  Delete "$INSTDIR\Csla.dll"
  Delete "$INSTDIR\database.mdb"
  Delete "$INSTDIR\GEARS.ico"
  Delete "$INSTDIR\HID.exe"
  Delete "$INSTDIR\LoadMasterMain.exe"
  Delete "$INSTDIR\LoadMasterMain.exe.config"
  Delete "$INSTDIR\cg.dll"
  Delete "$INSTDIR\csgl.dll"
  Delete "$INSTDIR\csgl.native.dll"
  RMDir /r  "$INSTDIR\Media\*.*"
  RMDir /r  "$INSTDIR\zh-CN\*.*"
  RMDir /r  "$INSTDIR\zh-HK\*.*"
 

Delete "$SMPROGRAMS\LoadMaster\Website.lnk"
Delete "$SMPROGRAMS\LoadMaster\Uninstall.lnk"
Delete "$SMPROGRAMS\LoadMaster\Manual.lnk"
delete "$smprograms\LoadMaster\LoadMaster4.0.lnk"
RMDir  "$INSTDIR"
RMDir "$SMPROGRAMS\LoadMaster"
delete "$desktop\LoadMaster4.0.lnk"
SetAutoClose true
${endif}

${if} $5 = 1028
  Delete "$INSTDIR\${PRODUCT_NAME}.url"
  Delete "$INSTDIR\uninst.exe"
  Delete "$INSTDIR\templet.zh-CHN.xls"
  Delete "$INSTDIR\templet.zh-CN.xls"
  Delete "$INSTDIR\templet.xls"
  Delete "$INSTDIR\resources.cfg"
  Delete "$INSTDIR\Manual.chm"
  Delete "$INSTDIR\Mogre.dll"
  Delete "$INSTDIR\MOIS.dll"
  Delete "$INSTDIR\Ogre.log"
  Delete "$INSTDIR\OgreMain.dll"
  Delete "$INSTDIR\OIS.dll"
  Delete "$INSTDIR\plugins.cfg"
  delete "$instdir\Plugin_OctreeSceneManager.dll"
  Delete "$INSTDIR\RenderSystem_Direct3D9.dll"
  Delete "$INSTDIR\RenderSystem_GL.dll"
  delete "$instdir\D3DX9_39.dll"
  delete "$instdir\LoadMasterUIControlLibrary.dll"
  delete "$instdir\ToolsForDataTransfer.exe"
  delete "$instdir\装箱大师新增功能.txt"
  Delete "$INSTDIR\Csla.dll"
  Delete "$INSTDIR\database.mdb"
  Delete "$INSTDIR\GEARS.ico"
  Delete "$INSTDIR\HID.exe"
  Delete "$INSTDIR\LoadMasterMain.exe"
  Delete "$INSTDIR\LoadMasterMain.exe.config"
  Delete "$INSTDIR\cg.dll"
  Delete "$INSTDIR\csgl.dll"
  Delete "$INSTDIR\csgl.native.dll"
  RMDir /r  "$INSTDIR\Media\*.*"
  RMDir /r  "$INSTDIR\zh-CN\*.*"
  RMDir /r  "$INSTDIR\zh-HK\*.*"
 
 
  Delete "$SMPROGRAMS\裝箱大師企業版\裝箱大師官方網站.lnk"
  Delete "$SMPROGRAMS\裝箱大師企業版\裝箱大師企業版幫助文檔.lnk"
  delete "$smprograms\裝箱大師企業版\裝箱大師企業版4.0.lnk"
  Delete "$SMPROGRAMS\裝箱大師企業版\裝箱大師企業版卸載.lnk"
  delete  "$desktop\裝箱大師企業版4.0.lnk"
  RMDir  "$INSTDIR"
  RMDir  "$SMPROGRAMS\裝箱大師企業版"

SetAutoClose true
${endif}
sectionend

 

Function un.onInit

ReadRegStr $5 HKLM  software\LoadMaster "language"
${if} $5 = 2052
  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除 装箱大师企业版 ,及其所有的组件?" IDYES goo
    Abort
${endif}
${if} $5 = 1028
  messagebox MB_ICONQUESTION|mb_yesno|MB_DEFBUTTON2 "您確實要完全移除 裝箱大師企業版 ,及其所有的組件?" IDYES goo
  abort
${endif}
${if} $5 = 1033
  messagebox MB_ICONQUESTION|mb_yesno|MB_DEFBUTTON2 "Are you sure you want to completely remove the software, and all its components ?" IDYES goo
  abort
  goo:
 
${endif}
FunctionEnd

Function un.onUninstSuccess
  HideWindow
  ${if} $5 = 2052
  MessageBox MB_ICONINFORMATION|MB_OK "装箱大师企业版 已成功地从您的计算机移除。"
  ${endif}
  ${if} $5 = 1028
  messagebox MB_ICONINFORMATION|MB_OK "裝箱大師企業版 已成功地從您的計算機移除。"
  ${endif}
  ${if} $5 = 1033
  messagebox MB_ICONINFORMATION|MB_OK " The software have been successfully removed"
  ${endif}
 
FunctionEnd


 

posted @ 2008-10-10 11:30  kin2321  阅读(1488)  评论(1编辑  收藏  举报