NSIS安装MSDE2000和NET2.0脚本代码

相关软件:使用到几个软件nsis-2.45-setup.exe(主程序)和nisedit2.0b5.exe(第三方编辑器)
要打包的文件:软件主程序,NET2.0组件。MSDE 2000 SP3,软件许可协议.TXT.读我.TXT和LOGO文件自己准备.广告条右侧安装LOGO尺寸150*57,按抓过界面左侧大图尺寸为164*314.
主要流程包括:定义参数,安装软件和组件选择,安装文件拷贝部分和卸载部分.快捷方式的建立删除。
要注意的地方是:先定义安装的Section区段,然后定义相关函数,读取注册表部分,创建删除文件部分,MSDE的setup.ini文件注意修改一下密码,MSDE实例名称等等信息,格式如下:
[Options]
INSTANCENAME="MSDE实例名称"
SAPWD="123456"
SECURITYMODE="SQL"
USEDEFAULTSAPWD
DISABLENETWORKPROTOCOLS=0
测试安装文件确实要比WINDOWS漂亮多了。安装MSDE后直接附加数据库的功能暂时没有研究。可以放到软件运行开始检测。

 

下面是脚本全文:

; Script generated by the HM NIS Edit Script Wizard.

; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "我的软件名称"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "我的公司名称, Inc."
!define PRODUCT_WEB_SITE "官方网站地址"
!define PRODUCT_DIR_REGKEY "Software/Microsoft/Windows/CurrentVersion/App Paths/我的应用程序可执行文件.exe"
!define PRODUCT_UNINST_KEY "Software/Microsoft/Windows/CurrentVersion/Uninstall/${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
; MUI 1.67 compatible ------
!include "MUI.nsh"
; MUI 预定义常量
!define MUI_ABORTWARNING
;定义装程序图标
!define MUI_ICON "标题栏目顶部左侧LOGO.ico"
;定义卸载程序图标
!define MUI_UNICON "卸载LOGO.ico"
;下面三行定义左侧图片
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_RIGHT
!define MUI_HEADERIMAGE_BITMAP "安装广告条LOGO.bmp"
; 定义安装语言选择
!define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"

; 欢迎页面
!insertmacro MUI_PAGE_WELCOME
; 许可协议页面
!insertmacro MUI_PAGE_LICENSE "软件许可协议.txt"
; 组件选择页面
!insertmacro MUI_PAGE_COMPONENTS
; 安装目录选择页面
!insertmacro MUI_PAGE_DIRECTORY
; 安装过程页面
!insertmacro MUI_PAGE_INSTFILES
; 安装完成页面
!define MUI_FINISHPAGE_RUN "$INSTDIR/我的应用程序可执行文件.exe"
!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR/读我.txt"
!insertmacro MUI_PAGE_FINISH

; 安装卸载过程页面
!insertmacro MUI_UNPAGE_INSTFILES

; 安装界面包含的语言设置
!insertmacro MUI_LANGUAGE "SimpChinese"
; 安装预释放文件
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS

; MUI 现代界面定义结束 ------

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Setup.exe"
InstallDir "$PROGRAMFILES/我的软件名称"
Icon "标题栏目顶部左侧LOGO.ico"
UninstallIcon "卸载LOGO.ico"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ComponentText "勾选想要安装的组件,并解除勾选你不想要安装的:"
DirText "安装程序将安装 $(^Name) 在下列文件夹。$/r$/n$/r$/n要安装在不同文件夹,单击 [浏览] 并选择其他文件夹。"
LicenseText "如果你接受所有协议条款,选择 [我愿意] 继续。你必须接受协议才能安装 $(^Name)。."
LicenseForceSelection checkbox
ShowInstDetails show
ShowUnInstDetails show
BrandingText "公司名称"
SetCompress off

;以下定义的是安装程序时候要选择的安装软件和组件列表sec01--软件主程序,sec02--NET2.0,sec03--MSDE2000
Section !应用程序主程序 sec01
;用户必选的安装程序
SectionIn RO
  SetOutPath "$INSTDIR"
  SetOverwrite ifnewer          ;文件较新安装方式
;下面设置的是应用程序发布的文件地址
  File "../我的工程项目名称/bin/Debug/我的工程项目名称.vshost.exe.manifest"
  File "../我的工程项目名称/bin/Debug/我的工程项目名称.vshost.exe.config"
  File "../我的工程项目名称/bin/Debug/我的工程项目名称.vshost.exe"
  File "../我的工程项目名称/bin/Debug/我的工程项目名称.vshost.application"
  File "../我的工程项目名称/bin/Debug/我的工程项目名称.suo"
  File "../我的工程项目名称/bin/Debug/我的工程项目名称.pdb"
  File "../我的工程项目名称/bin/Debug/我的应用程序可执行文件.exe.manifest"
  File "../我的工程项目名称/bin/Debug/我的应用程序可执行文件.exe.config"
  File "../我的工程项目名称/bin/Debug/我的应用程序可执行文件.exe"
;下面设置的是应用程序EXE文件的桌面快捷方式
  CreateShortCut "$DESKTOP/我的软件名称.lnk" "$INSTDIR/我的应用程序可执行文件.exe"
  CreateDirectory "开始菜单要定义的软件文件夹名称"
  CreateShortCut "$STARTMENU.lnk" "$INSTDIR/我的应用程序可执行文件.exe"
  File "../我的工程项目名称/bin/Debug/我的工程项目名称.application"
  ;拷贝主程序完成
  SetOutPath "$INSTDIR/Framework2.0"
  SetOverwrite try
  File "我的组件位置目录名称/Framework2.0/NetFx20SP2_x86.exe"
  ;拷贝NET2.0组件到安装目录下的Framework2.0目录中完成
  SetOutPath "$INSTDIR/MSDE"
  File "我的组件位置目录名称/MSDE/autorun.inf"
  SetOutPath "$INSTDIR/MSDE/Msi"
  File "我的组件位置目录名称/MSDE/Msi/InstMsi.exe"
  File "我的组件位置目录名称/MSDE/Msi/InstMsi20.exe"
  File "我的组件位置目录名称/MSDE/Msi/InstMsiW.exe"
  File "我的组件位置目录名称/MSDE/Msi/InstMsiW20.exe"
  SetOutPath "$INSTDIR/MSDE/MSM/1033"
  File "我的组件位置目录名称/MSDE/MSM/1033/DMO_RES.MSM"
  File "我的组件位置目录名称/MSDE/MSM/1033/DTS_RES.MSM"
  File "我的组件位置目录名称/MSDE/MSM/1033/REPL_RES.MSM"
  File "我的组件位置目录名称/MSDE/MSM/1033/SEM_RES.MSM"
  File "我的组件位置目录名称/MSDE/MSM/1033/SQLAGENT_RES.MSM"
  File "我的组件位置目录名称/MSDE/MSM/1033/SQLSVR_RES.MSM"
  File "我的组件位置目录名称/MSDE/MSM/1033/我的组件位置目录名称_RES.MSM"
  SetOutPath "$INSTDIR/MSDE/MSM/2052"
  File "我的组件位置目录名称/MSDE/MSM/2052/DMO_RES.MSM"
  File "我的组件位置目录名称/MSDE/MSM/2052/DTS_RES.MSM"
  File "我的组件位置目录名称/MSDE/MSM/2052/REPL_RES.MSM"
  File "我的组件位置目录名称/MSDE/MSM/2052/SEM_RES.MSM"
  File "我的组件位置目录名称/MSDE/MSM/2052/SQLAGENT_RES.MSM"
  File "我的组件位置目录名称/MSDE/MSM/2052/SQLBASE.MSM"
  File "我的组件位置目录名称/MSDE/MSM/2052/SQLSVR_RES.MSM"
  File "我的组件位置目录名称/MSDE/MSM/2052/我的组件位置目录名称_RES.MSM"
  SetOutPath "$INSTDIR/MSDE/MSM"
  File "我的组件位置目录名称/MSDE/MSM/atl.msm"
  File "我的组件位置目录名称/MSDE/MSM/CONNECT.MSM"
  File "我的组件位置目录名称/MSDE/MSM/DEV_SCM.MSM"
  File "我的组件位置目录名称/MSDE/MSM/DMO.MSM"
  File "我的组件位置目录名称/MSDE/MSM/DTC.MSM"
  File "我的组件位置目录名称/MSDE/MSM/DTS.MSM"
  File "我的组件位置目录名称/MSDE/MSM/mfc42.msm"
  File "我的组件位置目录名称/MSDE/MSM/msstkprp.msm"
  File "我的组件位置目录名称/MSDE/MSM/msvcirt.msm"
  File "我的组件位置目录名称/MSDE/MSM/msvcrt.msm"
  File "我的组件位置目录名称/MSDE/MSM/REPL.MSM"
  File "我的组件位置目录名称/MSDE/MSM/SEM.MSM"
  File "我的组件位置目录名称/MSDE/MSM/SHARED.MSM"
  File "我的组件位置目录名称/MSDE/MSM/SQLAGENT.MSM"
  File "我的组件位置目录名称/MSDE/MSM/SQLSVR.MSM"
  File "我的组件位置目录名称/MSDE/MSM/我的组件位置目录名称.MSM"
  File "我的组件位置目录名称/MSDE/MSM/UPGRADE.MSM"
  SetOutPath "$INSTDIR/MSDE"
  File "我的组件位置目录名称/MSDE/readme.txt"
  SetOutPath "$INSTDIR/MSDE/Setup"
  File "我的组件位置目录名称/MSDE/Setup/Sql2000.msi"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun.cab"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun01.msi"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun01P.msp"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun02.msi"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun02P.msp"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun03.msi"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun03P.msp"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun04.msi"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun04P.msp"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun05.msi"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun05P.msp"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun06.msi"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun06P.msp"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun07.msi"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun07P.msp"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun08.msi"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun08P.msp"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun09.msi"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun09P.msp"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun10.msi"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun10P.msp"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun11.msi"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun11P.msp"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun12.msi"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun12P.msp"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun13.msi"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun13P.msp"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun14.msi"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun14P.msp"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun15.msi"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun15P.msp"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun16.msi"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun16P.msp"
  File "我的组件位置目录名称/MSDE/Setup/SqlRun17P.msp"
  SetOutPath "$INSTDIR/MSDE"
  File "我的组件位置目录名称/MSDE/setup.exe"
  File "我的组件位置目录名称/MSDE/setup.ini"
  File "我的组件位置目录名称/MSDE/setup.rll"
  File "我的组件位置目录名称/MSDE/sp3readme.htm"
  File "我的组件位置目录名称/MSDE/sqlresld.dll"
  SetOutPath "$INSTDIR/DataBase"
  ;拷贝MSDE2000安装文件到安装目录下的MSDE目录中完成
SectionEnd

Section -AdditionalIcons
  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"
SectionEnd

Section -Post
  WriteUninstaller "$INSTDIR/uninst.exe"
  WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR/我的应用程序可执行文件.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}" "DisplayIcon" "$INSTDIR/我的应用程序可执行文件.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd


;必要组件Framework 2.0安装
Section 'NET Framework 2.0 SP2' sec02
;检查HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v2.0.50727键下的Install的值等于1,则说明.NET Framework 2.0.50727已经安装。
;检查HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v3.0键下的Install的值等于1
;检查HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v3.5键下的Install值等于1
ReadRegDWORD $0 HKLM 'SOFTWARE/Microsoft/NET Framework Setup/NDP/v2.0.50727' Install
${If} $0 == ''
;如果没有安装则调用对应位置的组件安装包进行安装
DetailPrint '..正在安装NET Framework 2.0 SP2组件'
SetOutPath "$INSTDIR"
SetOverwrite ifnewer
ExecWait 'INSTDIR/Framework2.0/NetFx20SP2_x86111.exe /quiet /norestart' $0
DetailPrint '..NET Framework 2.0 SP2 exit code = $0'
${Else}
;如果已经安装则调用显示对话框
DetailPrint '..您的电脑已经安装NET Framework 2.0 SP1组件!!'
${EndIf}
SectionEnd

;必要组件MSDE 2000安装
Section 'MSDE 2000' sec03
;检查HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/MSSQL$$MSDE实例名称键下的DisplayName的值等于MSSQL$$MSDE实例名称,则说明数据库软件MSDE 2000已经安装。
ReadRegDWORD $0 HKLM 'SYSTEM/CurrentControlSet/Services/MSSQL$$MSDE实例名称' DisplayName
${If} $0 == 'MSSQL$$MSDE实例名称'
;如果已经安装则调用显示对话框
DetailPrint '..您的电脑已经安装MSDE 2000软件!!'
${Else}
;如果没有安装则调用对应位置的组件安装包进行安装
DetailPrint '..正在安装MSDE 2000软件'
SetOutPath "$INSTDIR"
SetOverwrite ifnewer
ExecWait '$INSTDIR/MSDE/setup.exe /quiet /norestart' $0
DetailPrint '..MSDE 2000 exit code = $0'
${EndIf}
SectionEnd

; 区段组件描述,主要是安装选则组件时候鼠标移动到上面代码的sec01,sec02,sec03代码时候右边显示的区段描述
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${sec01} "我的软件名称主程序,必须安装!"
!insertmacro MUI_DESCRIPTION_TEXT ${sec02} "我的软件名称运行环境组件,可根据实际情况选择安装!"
!insertmacro MUI_DESCRIPTION_TEXT ${sec03} "我的软件名称运行数据库软件,可根据实际情况选择安装"
!insertmacro MUI_FUNCTION_DESCRIPTION_END

;安装部分相关的Function区段放置在安装Section区段之后
Function .onInit
;禁止多安装程序同时运行
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "myMutex") i .r1 ?e'
Pop $R0
StrCmp $R0 0 +3
MessageBox MB_OK|MB_ICONEXCLAMATION "安装程序已经在运行。"
Abort
;判断软件是否已经被安装
ReadRegStr $R0 HKLM "${PRODUCT_DIR_REGKEY}" ""
${If} $R0 != "" ;没有被安装时什么都不做直接跳出
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您的电脑已经安装有${PRODUCT_NAME}产品,是否卸载它?" IDYES +2
Abort
ReadRegStr $R1 HKLM "${PRODUCT_UNINST_KEY}" "UninstallString"
;运行卸载程序
ClearErrors
ExecWait '$R1 _?=$INSTDIR'
IfErrors no_remove_uninstaller
IfFileExists "$INSTDIR/makensis.exe" no_remove_uninstaller
Delete $R1
RMDir $INSTDIR
no_remove_uninstaller:
${EndIf}

FunctionEnd


;安装程序的卸载部分
Section Uninstall
  Delete "$INSTDIR/${PRODUCT_NAME}.url"
  Delete "$INSTDIR/uninst.exe"
  ;开始删除MSDE2000相关的安装文件
  Delete "$INSTDIR/MSDE/sqlresld.dll"
  Delete "$INSTDIR/MSDE/sp3readme.htm"
  Delete "$INSTDIR/MSDE/setup.rll"
  Delete "$INSTDIR/MSDE/setup.ini"
  Delete "$INSTDIR/MSDE/setup.exe"
  Delete "$INSTDIR/MSDE/Setup/SqlRun17P.msp"
  Delete "$INSTDIR/MSDE/Setup/SqlRun16P.msp"
  Delete "$INSTDIR/MSDE/Setup/SqlRun16.msi"
  Delete "$INSTDIR/MSDE/Setup/SqlRun15P.msp"
  Delete "$INSTDIR/MSDE/Setup/SqlRun15.msi"
  Delete "$INSTDIR/MSDE/Setup/SqlRun14P.msp"
  Delete "$INSTDIR/MSDE/Setup/SqlRun14.msi"
  Delete "$INSTDIR/MSDE/Setup/SqlRun13P.msp"
  Delete "$INSTDIR/MSDE/Setup/SqlRun13.msi"
  Delete "$INSTDIR/MSDE/Setup/SqlRun12P.msp"
  Delete "$INSTDIR/MSDE/Setup/SqlRun12.msi"
  Delete "$INSTDIR/MSDE/Setup/SqlRun11P.msp"
  Delete "$INSTDIR/MSDE/Setup/SqlRun11.msi"
  Delete "$INSTDIR/MSDE/Setup/SqlRun10P.msp"
  Delete "$INSTDIR/MSDE/Setup/SqlRun10.msi"
  Delete "$INSTDIR/MSDE/Setup/SqlRun09P.msp"
  Delete "$INSTDIR/MSDE/Setup/SqlRun09.msi"
  Delete "$INSTDIR/MSDE/Setup/SqlRun08P.msp"
  Delete "$INSTDIR/MSDE/Setup/SqlRun08.msi"
  Delete "$INSTDIR/MSDE/Setup/SqlRun07P.msp"
  Delete "$INSTDIR/MSDE/Setup/SqlRun07.msi"
  Delete "$INSTDIR/MSDE/Setup/SqlRun06P.msp"
  Delete "$INSTDIR/MSDE/Setup/SqlRun06.msi"
  Delete "$INSTDIR/MSDE/Setup/SqlRun05P.msp"
  Delete "$INSTDIR/MSDE/Setup/SqlRun05.msi"
  Delete "$INSTDIR/MSDE/Setup/SqlRun04P.msp"
  Delete "$INSTDIR/MSDE/Setup/SqlRun04.msi"
  Delete "$INSTDIR/MSDE/Setup/SqlRun03P.msp"
  Delete "$INSTDIR/MSDE/Setup/SqlRun03.msi"
  Delete "$INSTDIR/MSDE/Setup/SqlRun02P.msp"
  Delete "$INSTDIR/MSDE/Setup/SqlRun02.msi"
  Delete "$INSTDIR/MSDE/Setup/SqlRun01P.msp"
  Delete "$INSTDIR/MSDE/Setup/SqlRun01.msi"
  Delete "$INSTDIR/MSDE/Setup/SqlRun.cab"
  Delete "$INSTDIR/MSDE/Setup/Sql2000.msi"
  Delete "$INSTDIR/MSDE/readme.txt"
  Delete "$INSTDIR/MSDE/MSM/UPGRADE.MSM"
  Delete "$INSTDIR/MSDE/MSM/我的组件位置目录名称.MSM"
  Delete "$INSTDIR/MSDE/MSM/SQLSVR.MSM"
  Delete "$INSTDIR/MSDE/MSM/SQLAGENT.MSM"
  Delete "$INSTDIR/MSDE/MSM/SHARED.MSM"
  Delete "$INSTDIR/MSDE/MSM/SEM.MSM"
  Delete "$INSTDIR/MSDE/MSM/REPL.MSM"
  Delete "$INSTDIR/MSDE/MSM/msvcrt.msm"
  Delete "$INSTDIR/MSDE/MSM/msvcirt.msm"
  Delete "$INSTDIR/MSDE/MSM/msstkprp.msm"
  Delete "$INSTDIR/MSDE/MSM/mfc42.msm"
  Delete "$INSTDIR/MSDE/MSM/DTS.MSM"
  Delete "$INSTDIR/MSDE/MSM/DTC.MSM"
  Delete "$INSTDIR/MSDE/MSM/DMO.MSM"
  Delete "$INSTDIR/MSDE/MSM/DEV_SCM.MSM"
  Delete "$INSTDIR/MSDE/MSM/CONNECT.MSM"
  Delete "$INSTDIR/MSDE/MSM/atl.msm"
  Delete "$INSTDIR/MSDE/MSM/2052/我的组件位置目录名称_RES.MSM"
  Delete "$INSTDIR/MSDE/MSM/2052/SQLSVR_RES.MSM"
  Delete "$INSTDIR/MSDE/MSM/2052/SQLBASE.MSM"
  Delete "$INSTDIR/MSDE/MSM/2052/SQLAGENT_RES.MSM"
  Delete "$INSTDIR/MSDE/MSM/2052/SEM_RES.MSM"
  Delete "$INSTDIR/MSDE/MSM/2052/REPL_RES.MSM"
  Delete "$INSTDIR/MSDE/MSM/2052/DTS_RES.MSM"
  Delete "$INSTDIR/MSDE/MSM/2052/DMO_RES.MSM"
  Delete "$INSTDIR/MSDE/MSM/1033/我的组件位置目录名称_RES.MSM"
  Delete "$INSTDIR/MSDE/MSM/1033/SQLSVR_RES.MSM"
  Delete "$INSTDIR/MSDE/MSM/1033/SQLAGENT_RES.MSM"
  Delete "$INSTDIR/MSDE/MSM/1033/SEM_RES.MSM"
  Delete "$INSTDIR/MSDE/MSM/1033/REPL_RES.MSM"
  Delete "$INSTDIR/MSDE/MSM/1033/DTS_RES.MSM"
  Delete "$INSTDIR/MSDE/MSM/1033/DMO_RES.MSM"
  Delete "$INSTDIR/MSDE/Msi/InstMsiW20.exe"
  Delete "$INSTDIR/MSDE/Msi/InstMsiW.exe"
  Delete "$INSTDIR/MSDE/Msi/InstMsi20.exe"
  Delete "$INSTDIR/MSDE/Msi/InstMsi.exe"
  Delete "$INSTDIR/MSDE/autorun.inf"
  ;开始删除NET2.0相关的安装文件
  Delete "$INSTDIR/Framework2.0/NetFx20SP2_x86.exe"
  ;开始删除主程序相关的安装文件
  Delete "$INSTDIR/我的工程项目名称.application"
  Delete "$INSTDIR/我的应用程序可执行文件.exe"
  Delete "$INSTDIR/我的应用程序可执行文件.exe.config"
  Delete "$INSTDIR/我的应用程序可执行文件.exe.manifest"
  Delete "$INSTDIR/我的工程项目名称.pdb"
  Delete "$INSTDIR/我的工程项目名称.suo"
  Delete "$INSTDIR/我的工程项目名称.vshost.application"
  Delete "$INSTDIR/我的工程项目名称.vshost.exe"
  Delete "$INSTDIR/我的工程项目名称.vshost.exe.config"
  Delete "$INSTDIR/我的工程项目名称.vshost.exe.manifest"
  ;开始删除开始菜单和桌面上相关的快捷方式文件
  Delete "$SMPROGRAMS/我的软件名称/卸载软件.lnk"
  Delete "$SMPROGRAMS/我的软件名称/官方网站.lnk"
  Delete "$STARTMENU.lnk"
  Delete "$DESKTOP/我的软件名称.lnk"
  ;开始删除对应的目录
  RMDir "$SMPROGRAMS/我的软件名称"
  RMDir "$INSTDIR/MSDE/Setup"
  RMDir "$INSTDIR/MSDE/MSM/2052"
  RMDir "$INSTDIR/MSDE/MSM/1033"
  RMDir "$INSTDIR/MSDE/MSM"
  RMDir "$INSTDIR/MSDE/Msi"
  RMDir "$INSTDIR/MSDE"
  RMDir "$INSTDIR/Framework2.0"
  RMDir "$INSTDIR"
  RMDir ""

  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
  DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
  SetAutoClose true
SectionEnd

;卸载部分相关的Function区段放置在卸载Section区段之后
Function un.onInit
  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完全移除 $(^Name) ,其及所有的组件?" IDYES +2
  Abort
FunctionEnd

Function un.onUninstSuccess
  HideWindow
  MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从你的计算机移除。"
FunctionEnd

posted on 2010-04-04 17:20  风灵溪清  阅读(237)  评论(0编辑  收藏  举报

导航