小默

NSIS制作安装文件全攻略(一) zz

; NSIS 安装脚本示例 by haijd
; 参考: http:
//www.yonsm.net/read.php?58
;
#
=========================================================================================
; 头文件
!include "MUI.nsh"
!include "Sections.nsh"
!include "LogicLib.nsh"
#
=========================================================================================
#
=========================================================================================
; 宏定义
!define STR_AppName "易极OA协同办公系统"
!define STR_Version "1.0"
!define STR_Publisher "亿级空间"
!define STR_HomepageUrl "http://www.eg-oa.com"
!define REG_AppBase "Software\EgOA"
!define REG_Uninstall "Software\Microsoft\Windows\CurrentVersion\Uninstall\${STR_AppName}"
#
=========================================================================================
#
=========================================================================================
; MUI 设置
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall.ico"
!define MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange.bmp"
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange-uninstall.bmp"
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\orange.bmp"
!define MUI_HEADERIMAGE_UNBITMAP "${NSISDIR}\Contrib\Graphics\Header\orange-uninstall.bmp"
; 语言选择设置
!define MUI_LANGDLL_REGISTRY_ROOT "HKCU"
!define MUI_LANGDLL_REGISTRY_KEY "${REG_Uninstall}"
!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"
; 组件页面设置
!define MUI_COMPONENTSPAGE_SMALLDESC
; 开始菜单页面设置
var STR_GroupName
var TMP_GroupName
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
!define MUI_STARTMENUPAGE_REGISTRY_KEY "${REG_Uninstall}"
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "${STR_AppName}"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "NSIS:StartMenuDir"
; 完成安装页面设置
!define MUI_FINISHPAGE_RUN "C:\Program Files\Internet Explorer\iexplore.exe -new www.google.com"
!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR/help/index.html"
!define MUI_FINISHPAGE_SHOWREADME_TEXT "$(LNG_ShowHelp)"
!define MUI_FINISHPAGE_LINK "${STR_AppName} $(LNG_Homepage): ${STR_HomepageUrl}"
!define MUI_FINISHPAGE_LINK_LOCATION "${STR_HomepageUrl}"
; 安装页面
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "$(LNG_License)"
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_STARTMENU Application $STR_GroupName
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
; 卸载页面
!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH
; 语言支持
!insertmacro MUI_LANGUAGE "SimpChinese"
;
!insertmacro MUI_LANGUAGE "English"
#
=========================================================================================
#
=========================================================================================
; 语言相关字符串
LicenseLangString LNG_License ${LANG_ENGLISH} 
".\resource\EULA.txt"
LangString LNG_BrandingText ${LANG_ENGLISH} 
"haijd Software"
LangString LNG_DefaultInstation ${LANG_ENGLISH} 
"Default installtion"
LangString LNG_FullInstation ${LANG_ENGLISH} 
"Full installtion"
LangString LNG_MinimalInstation ${LANG_ENGLISH} 
"Minimal installtion"
LangString LNG_Help ${LANG_ENGLISH} 
"Help"
LangString LNG_Homepage ${LANG_ENGLISH} 
"Homepage"
LangString LNG_Uninstall ${LANG_ENGLISH} 
"Uninstall"
LangString LNG_ShowHelp ${LANG_ENGLISH} 
"Show Help"
LangString LNG_ProgramFile ${LANG_ENGLISH} 
"Program Files"
LangString LNG_EgOA ${LANG_ENGLISH} 
"Main program"
LangString LNG_ServerEnv ${LANG_ENGLISH} 
"Services environment."
LangString LNG_CreateShortcut ${LANG_ENGLISH} 
"Create Shortcut"
LangString LNG_ProgramMenuShortcutGroup ${LANG_ENGLISH} 
"Program Menu Shortcut Group"
LangString LNG_DesktopShortcut ${LANG_ENGLISH} 
"Desktop Shortcut"
LangString LNG_QuickLaunchShortcut ${LANG_ENGLISH} 
"Quick Launch Bar Shortcut"
LangString LNG_ProgramFileDesc ${LANG_ENGLISH} 
"Install ${STR_AppName} program files."
LangString LNG_EgOADesc ${LANG_ENGLISH} 
"Install ${STR_AppName} main program files."
LangString LNG_ServerEnvDesc ${LANG_ENGLISH} 
"Install ${STR_AppName} services environment."
LangString LNG_CreateShortcutDesc ${LANG_ENGLISH} 
"Create shortcuts to launch the program easy."
LicenseLangString LNG_License ${LANG_SIMPCHINESE} 
".\resource\EULA.txt"
LangString LNG_BrandingText ${LANG_SIMPCHINESE} 
"haijd Software"
LangString LNG_DefaultInstation ${LANG_SIMPCHINESE} 
"默认安装"
LangString LNG_FullInstation ${LANG_SIMPCHINESE} 
"完全安装"
LangString LNG_MinimalInstation ${LANG_SIMPCHINESE} 
"最小安装"
LangString LNG_Help ${LANG_SIMPCHINESE} 
"帮助"
LangString LNG_Homepage ${LANG_SIMPCHINESE} 
"主页"
LangString LNG_Uninstall ${LANG_SIMPCHINESE} 
"卸载"
LangString LNG_ShowHelp ${LANG_SIMPCHINESE} 
"查看帮助"
LangString LNG_ProgramFile ${LANG_SIMPCHINESE} 
"程序文件"
LangString LNG_EgOA ${LANG_SIMPCHINESE} 
"主程序"
LangString LNG_ServerEnv ${LANG_SIMPCHINESE} 
"服务环境"
LangString LNG_CreateShortcut ${LANG_SIMPCHINESE} 
"创建快捷方式"
LangString LNG_ProgramMenuShortcutGroup ${LANG_SIMPCHINESE} 
"程序菜单快捷方式组"
LangString LNG_DesktopShortcut ${LANG_SIMPCHINESE} 
"桌面快捷方式"
LangString LNG_QuickLaunchShortcut ${LANG_SIMPCHINESE} 
"快速启动栏快捷方式"
LangString LNG_ProgramFileDesc ${LANG_SIMPCHINESE} 
"安装 ${STR_AppName} 程序文件。"
LangString LNG_EgOADesc ${LANG_SIMPCHINESE} 
"安装 ${STR_AppName} 主程序文件"
LangString LNG_ServerEnvDesc ${LANG_SIMPCHINESE} 
"安装 ${STR_AppName} 服务环境"
LangString LNG_CreateShortcutDesc ${LANG_SIMPCHINESE} 
"创建用于快速访问的快捷方式。"
#
=========================================================================================
#
=========================================================================================
; 杂项
Name 
"${STR_AppName} ${STR_Version}"
OutFile 
"${STR_AppName}_${STR_Version}.exe"
InstallDir 
"$PROGRAMFILES\egoa"
InstallDirRegKey HKCU 
"${REG_AppBase}" "InstallDir"
ShowInstDetails SHOW
ShowUnInstDetails SHOW
BrandingText 
"$(LNG_BrandingText)"
#
=========================================================================================
#
=========================================================================================
; 安装类型
!ifndef NOINSTTYPES
    InstType 
"$(LNG_DefaultInstation)"
    InstType 
"$(LNG_FullInstation)"
    InstType 
"$(LNG_MinimalInstation)"
!endif
#
=========================================================================================
#
=========================================================================================
; 程序文件
Section
    LogSet on
SectionEnd
SectionGroup 
/"$(LNG_ProgramFile)" SEC_ProgramFile
    Section 
"$(LNG_EgOA)" SEC_EgOA
    SectionIn 
1 2 3 RO
    SetOverwrite ON
    SetOutPath 
"$INSTDIR"
    File 
".\resource\egoa.ico"
    File 
/".\resource\program"
    SectionEnd
    Section 
"$(LNG_ServerEnv)" SEC_ServerEnv
    SectionIn 
1 2 3 RO
    SetOutPath 
"$INSTDIR"
    File 
/".\resource\server"
    File 
/".\resource\database"
    SectionEnd
    Section 
"$(LNG_Help)" SEC_Help
    SectionIn 
1 2
    SetOutPath 
"$INSTDIR"
    File 
/".\resource\help"
    SectionEnd
SectionGroupEnd
#
=========================================================================================
#
=========================================================================================
; 快捷方式
SectionGroup 
"$(LNG_CreateShortcut)" SEC_Shortcut
    ; 创建开始菜单程序组
    SectionGroup 
"$(LNG_ProgramMenuShortcutGroup)" SEC_ProgramMenuShortcutGroup
    Section 
"${STR_AppName}" SEC_AppNameShortcut
        SectionIn 
1 2
        CreateDirectory 
"$SMPROGRAMS\$STR_GroupName"
        WriteINIStr 
"$SMPROGRAMS\$STR_GroupName\${STR_AppName}.url" "InternetShortcut" "URL" "$INSTDIR/program/www/index.html"
    SectionEnd
    Section 
"${STR_AppName} $(LNG_Help)" SEC_HelpShortcut
        SectionIn 
1 2
        CreateDirectory 
"$SMPROGRAMS\$STR_GroupName"
        WriteINIStr 
"$SMPROGRAMS\$STR_GroupName\${STR_AppName} $(LNG_Help).url" "InternetShortcut" "URL" "$INSTDIR/program/www/help/index.html"
    SectionEnd
    Section 
"${STR_AppName} $(LNG_Homepage)" SEC_HomePageShortcut
        SectionIn 
1 2
        CreateDirectory 
"$SMPROGRAMS\$STR_GroupName"
        WriteINIStr 
"$SMPROGRAMS\$STR_GroupName\${STR_AppName} $(LNG_Homepage).url" "InternetShortcut" "URL" "${STR_HomepageUrl}"
    SectionEnd
    Section 
"$(LNG_Uninstall) ${STR_AppName}" SEC_UninstallShortcut
        SectionIn 
1 2
        CreateDirectory 
"$SMPROGRAMS\$STR_GroupName"
        CreateShortCut 
"$SMPROGRAMS\$STR_GroupName\$(LNG_Uninstall) ${STR_AppName}.lnk" "$INSTDIR\Uninstall.exe"
    SectionEnd
    SectionGroupEnd
    ; 桌面
    Section 
"$(LNG_DesktopShortcut)" SEC_DesktopShortcut
    SectionIn 
1 2
    WriteINIStr 
"$DESKTOP\${STR_AppName}.url" "InternetShortcut" "URL" "http://127.0.0.1/"
    SectionEnd
    ; 快速启动
    Section 
"$(LNG_QuickLaunchShortcut)" SEC_QuickLaunchShortcut
    SectionIn 
2
    WriteINIStr 
"$QUICKLAUNCH\${STR_AppName}.url" "InternetShortcut" "URL" "http://127.0.0.1/"
    SectionEnd
SectionGroupEnd
#
=========================================================================================
#
=========================================================================================
# 替换文件内容用的宏
!macro ReplaceConfig FileName StringOld StringNew
    Push `${StringOld}`     #text to be replaced
    Push `${StringNew}`     #replace with
    Push all                #replace all occurrences
    Push all                #replace all occurrences
    Push `${FileName}`      #file to replace 
in
    Call AdvReplaceInFile
!macroend
#
=========================================================================================
#
=========================================================================================
; 配置服务
Section 
"-SettingServer"
    ; 修改配置文件
    
!insertmacro ReplaceConfig "$INSTDIR\server\Apache2.2\conf\httpd.conf" "EGOA_BASE_PATH" "$INSTDIR"
    
!insertmacro ReplaceConfig "$INSTDIR\server\MySQL4.1\my.ini" "EGOA_BASE_PATH" "$INSTDIR"
    
!insertmacro ReplaceConfig "$INSTDIR\server\php5\php.ini" "EGOA_BASE_PATH" "$INSTDIR"
    ; 创建服务
    nsExec::ExecToLog 
'"$INSTDIR\server\MySQL4.1\bin\mysqld-nt.exe" --install MySQL4.1 --defaults-file="$INSTDIR\server\MySQL4.1\my.ini"'
    nsExec::ExecToLog 
'"$INSTDIR\server\Apache2.2\bin\httpd.exe" -k install'
    ; 启动服务
    nsExec::ExecToLog 
'net start MySQL4.1'
    nsExec::ExecToLog 
'net start Apache2.2'
SectionEnd
#
=========================================================================================
#
=========================================================================================
; 完成安装
Section 
"-PostInstall"
    ; 输出卸载程序
    WriteUninstaller 
"$INSTDIR\Uninstall.exe"
    ; 写注册表
    WriteRegStr HKCU 
"${REG_AppBase}" "InstallDir" "$INSTDIR"       ; 安装的目录
    WriteRegStr HKCU 
"${REG_AppBase}" "GroupName" "$STR_GroupName"  ; 软件在开始菜单中的名称
    WriteRegStr HKCU 
"${REG_AppBase}" "Version" "${STR_Version}"    ; 版本号
    WriteRegStr HKCU 
"${REG_Uninstall}" "DisplayName" "$(^Name)"
    WriteRegStr HKCU 
"${REG_Uninstall}" "UninstallString" "$INSTDIR\Uninstall.exe"
    WriteRegStr HKCU 
"${REG_Uninstall}" "DisplayIcon" "$INSTDIR\EgOA.ico"
    WriteRegStr HKCU 
"${REG_Uninstall}" "DisplayVersion" "${STR_Version}"
    WriteRegStr HKCU 
"${REG_Uninstall}" "URLInfoAbout" "${STR_HomepageUrl}"
    WriteRegStr HKCU 
"${REG_Uninstall}" "Publisher" "${STR_Publisher}"
SectionEnd
#
=========================================================================================
#
=========================================================================================
; 初始化回调函数
Function .onInit
    
!insertmacro MUI_LANGDLL_DISPLAY
    ; 判断是否已安装
    Var 
/GLOBAL OLD_REG_Version
    ReadRegStr $OLD_REG_Version 
"HKCU" "${REG_APPBASE}" "Version"
    ${If} $OLD_REG_Version 
<> ''
    Abort 
'系统中已安装有本程序,请先卸载后再安装!'
    ${EndIf}
FunctionEnd
#
=========================================================================================
#
=========================================================================================
# 替换文件中的字符串
Function AdvReplaceInFile
    Exch $
0  ;file to replace in
    Exch
    Exch $
1  ;number to replace after
    Exch
    Exch 
2
    Exch $
2  ;replace and onwards
    Exch 
2
    Exch 
3
    Exch $
3  ;replace with
    Exch 
3
    Exch 
4
    Exch $
4  ;to replace
    Exch 
4
    Push $
5  ;minus count
    Push $
6  ;universal
    Push $
7  ;end string
    Push $
8  ;left string
    Push $
9  ;right string
    Push $R0 ;file1
    Push $R1 ;file2
    Push $R2 ;read
    Push $R3 ;universal
    Push $R4 ;count (onwards)
    Push $R5 ;count (after)
    Push $R6 ;temp file name
    GetTempFileName $R6
    FileOpen $R1 $
0 r   ;file to search in
    FileOpen $R0 $R6 w  ;temp file
    StrLen $R3 $
4
    StrCpy $R4 
-1
    StrCpy $R5 
-1
    loop_read:
    ClearErrors
    FileRead $R1 $R2 ;read line
    IfErrors exit
    StrCpy $
5 0
    StrCpy $
7 $R2
    loop_filter:
    IntOp $
5 $5 - 1
    StrCpy $
6 $7 $R3 $5 ;search
    StrCmp $
6 "" file_write2
    StrCmp $
6 $4 0 loop_filter
    StrCpy $
8 $7 $5     ;left part
    IntOp $
6 $5 + $R3
    IntCmp $
6 0 is0 not0
    is0:
    StrCpy $
9 ""
    Goto done
    not0:
    StrCpy $
9 $7 "" $6  ;right part
    done:
    StrCpy $
7 $8$3$9    ;re-join
    IntOp $R4 $R4 
+ 1
    StrCmp $
2 all file_write1
    StrCmp $R4 $
2 0 file_write2
    IntOp $R4 $R4 
- 1
    IntOp $R5 $R5 
+ 1
    StrCmp $
1 all file_write1
    StrCmp $R5 $
1 0 file_write1
    IntOp $R5 $R5 
- 1
    Goto file_write2
    file_write1:
    FileWrite $R0 $
7  ;write modified line
    Goto loop_read
    file_write2:
    FileWrite $R0 $R2 ;write unmodified line
    Goto loop_read
    exit:
    FileClose $R0
    FileClose $R1
    SetDetailsPrint none
    Delete $
0
    Rename $R6 $
0
    Delete $R6
    SetDetailsPrint both
    Pop $R6
    Pop $R5
    Pop $R4
    Pop $R3
    Pop $R2
    Pop $R1
    Pop $R0
    Pop $
9
    Pop $
8
    Pop $
7
    Pop $
6
    Pop $
5
    Pop $
0
    Pop $
1
    Pop $
2
    Pop $
3
    Pop $
4
FunctionEnd
#
=========================================================================================
#
=========================================================================================
# 根据安装日志卸载文件的调用宏
!macro DelFileByLog LogFile
  ifFileExists `${LogFile}` 
0 +4
    Push `${LogFile}`
    Call un.DelFileByLog
    Delete `${LogFile}`
!macroend
#
=========================================================================================
#
=========================================================================================
; 卸载
Section 
"Uninstall"
    ; 停止服务
    nsExec::ExecToLog 
'net stop Apache2.2'
    nsExec::ExecToLog 
'net stop MySQL4.1'
    ; 卸载服务
    nsExec::ExecToLog 
'"$INSTDIR\server\MySQL4.1\bin\mysqld-nt.exe" --remove MySQL4.1'
    nsExec::ExecToLog 
'"$INSTDIR\server\Apache2.2\bin\httpd.exe" -k uninstall'
    ; 从注册表中取得软件在开始菜单中的名称
    ReadRegStr $TMP_GroupName HKCU 
"${REG_AppBase}" "GroupName"
    ; 删除开始菜单中的快捷方式与目录
    Delete 
"$SMPROGRAMS\$TMP_GroupName\${STR_AppName}.url"
    Delete 
"$SMPROGRAMS\$TMP_GroupName\${STR_AppName} $(LNG_Help).url"
    Delete 
"$SMPROGRAMS\$TMP_GroupName\${STR_AppName} $(LNG_Homepage).url"
    Delete 
"$SMPROGRAMS\$TMP_GroupName\$(LNG_Uninstall) ${STR_AppName}.lnk"
    RMDir  
"$SMPROGRAMS\$TMP_GroupName"
    Delete 
/REBOOTOK "$DESKTOP\${STR_AppName}.url"          ; 删除桌面快捷方式
    Delete 
/REBOOTOK "$QUICKLAUNCH\${STR_AppName}.url"      ; 删除快速启动快捷方式
    ; 调用宏根据安装日志卸载安装程序自己安装过的文件
    
!insertmacro DelFileByLog "$INSTDIR\install.log"
    ; 删除安装目录中的文件
    RMDir  
"$INSTDIR"
    RMDir  
"$INSTDIR\help"
    RMDir  
"$INSTDIR\program"
    RMDir  
//REBOOTOK "$INSTDIR\server"
    RMDir  
//REBOOTOK "$INSTDIR\help"
    ; 删除注册表内容
    DeleteRegKey HKCU 
"${REG_Uninstall}"
    DeleteRegKey HKCU 
"${REG_AppBase}"
    SetAutoClose True
SectionEnd
#
=========================================================================================
#
=========================================================================================
; 卸载初始化
Function un.onInit
    
!insertmacro MUI_UNGETLANGUAGE
FunctionEnd
#
=========================================================================================
#
=========================================================================================
# 卸载程序通过安装日志卸载文件函数
Function un.DelFileByLog
    Exch $R0
    Push $R1
    Push $R2
    Push $R3
    FileOpen $R0 $R0 r
    ${Do}
    FileRead $R0 $R1
    ${IfThen} $R1 
== `` ${|} ${ExitDo} ${|}
    StrCpy $R1 $R1 
-2
    StrCpy $R2 $R1 
11
    StrCpy $R3 $R1 
20
    ${If} $R2 
== "File: wrote"
    ${OrIf} $R2 
== "File: skipp"
    ${OrIf} $R3 
== "CreateShortCut: out:"
    ${OrIf} $R3 
== "created uninstaller:"
        Push $R1
        Push `
"`
        Call un.DelFileByLog.StrLoc
        Pop $R2
        ${If} $R2 
!= ""
        IntOp $R2 $R2 
+ 1
        StrCpy $R3 $R1 
"" $R2
        Push $R3
        Push `
"`
        Call un.DelFileByLog.StrLoc
        Pop $R2
        ${If} $R2 
!= ""
            StrCpy $R3 $R3 $R2
            Delete 
/REBOOTOK $R3
        ${EndIf}
        ${EndIf}
    ${EndIf}
    StrCpy $R2 $R1 
7
    ${If} $R2 
== "Rename:"
        Push $R1
        Push 
"->"
        Call un.DelFileByLog.StrLoc
        Pop $R2
        ${If} $R2 
!= ""
        IntOp $R2 $R2 
+ 2
        StrCpy $R3 $R1 
"" $R2
        Delete 
/REBOOTOK $R3
        ${EndIf}
    ${EndIf}
    ${Loop}
    FileClose $R0
    Pop $R3
    Pop $R2
    Pop $R1
    Pop $R0
FunctionEnd
Function un.DelFileByLog.StrLoc
    Exch $R0
    Exch
    Exch $R1
    Push $R2
    Push $R3
    Push $R4
    Push $R5
    StrLen $R2 $R0
    StrLen $R3 $R1
    StrCpy $R4 
0
    ${Do}
    StrCpy $R5 $R1 $R2 $R4
    ${If} $R5 
== $R0
    ${OrIf} $R4 
= $R3
        ${ExitDo}
    ${EndIf}
    IntOp $R4 $R4 
+ 1
    ${Loop}
    ${If} $R4 
= $R3
    StrCpy $R0 
""
    ${Else}
    StrCpy $R0 $R4
    ${EndIf}
    Pop $R5
    Pop $R4
    Pop $R3
    Pop $R2
    Pop $R1
    Exch $R0
FunctionEnd
#
=========================================================================================
#
=========================================================================================
# 节描述
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
    
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_ProgramFile} "$(LNG_ProgramFileDesc)"
    
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_EgOA} "$(LNG_EgOADesc)"
    
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_ServerEnv} "$(LNG_ServerEnvDesc)"
    
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_Shortcut} "$(LNG_CreateShortcutDesc)"
    
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_DesktopShortcut} "$(LNG_CreateShortcutDesc)"
    
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_QuickLaunchShortcut} "$(LNG_CreateShortcutDesc)"
    
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_AppNameShortcut} "$(LNG_CreateShortcutDesc)"
    
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_HelpShortcut} "$(LNG_CreateShortcutDesc)"
    
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_HomePageShortcut} "$(LNG_CreateShortcutDesc)"
    
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_UninstallShortcut} "$(LNG_CreateShortcutDesc)"
!insertmacro MUI_FUNCTION_DESCRIPTION_END
#
=========================================================================================

posted on 2010-02-06 00:01 小默 阅读(2185) 评论(0)  编辑 收藏 引用 所属分类: Language


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

统计

留言簿(13)

随笔分类(287)

随笔档案(289)

漏洞

搜索

积分与排名

最新评论

阅读排行榜