NSIS附加数据库,分离数据库脚本代码

主要使用Binn/isql.exe执行SQL脚本文件命令进行操作,SQL脚本文件在安装程序中自动生成,完成操作后删除。

详细代码如下:

 

Section !主程序 sec01
;用户必选的安装程序
SectionIn RO

 

;判断数据库是否已经附加,如果没有附加,则附加数据库
ClearErrors
;从注册表中读取SQL安装程序路径
ReadRegStr $R1 HKLM "SOFTWARE/Microsoft/Microsoft SQL Server/80/Tools/ClientSetup" "SQLPath"
;从注册表中读取当前电脑的名称
ReadRegStr $R2 HKLM "SYSTEM/CurrentControlSet/Control/ComputerName/ComputerName" "ComputerName"
;将附加数据库的命令写入到文本中
FileOpen $R3 "$INSTDIR/attach_db.sql" w
FileWrite $R3 "exec sp_attach_db @dbname = N$/'数据库名称$/', @filename1 = N$/'$INSTDIR/DataBase/MDF主数据库文件名.MDF$/',@filename2=N$/'$INSTDIR/DataBase/LDF日志数据库文件名.LDF$/'"
FileWriteByte $R3 "13"
FileWriteByte $R3 "10"
FileClose $R3
;利用临时文件存储执行SQL语句的运行结果
GetTempFileName $R0
DetailPrint "正在附加数据库..."
;无窗口执行CMD命令
nsExec::ExecToLog '"$R1/Binn/isql.exe" -U "sa" -P "123456" -S  "$R2/MSDE实例名" -d master -i "$INSTDIR/attach_db.sql" -o "$R0" -b'
DetailPrint "附加数据库完成..."

 

SectionEnd

 

Function .onInstSuccess
;删除附加数据库脚本文件
Delete "$INSTDIR/attach_db.sql"
FunctionEnd

 

 

;安装程序的卸载部分
Section Uninstall
  MessageBox MB_YESNO|MB_ICONQUESTION "是否同时删除数据库?(若您想保留,请点击“否”按钮)"
  GOTO NoDelete
  ; 删除数据库文件
  Delete "$INSTDIR/DataBase/MDF主数据库文件名.MDF"
  Delete "$INSTDIR/DataBase/LDF日志数据库文件名.LDF"
  NoDelete:
  ClearErrors

  ; 删除数据库分离脚本文件

  Delete "$INSTDIR/detach_db.sql"

SectionEnd

 

Function un.onInit

ClearErrors
;从注册表中读取SQL安装程序路径
ReadRegStr $R1 HKLM "SOFTWARE/Microsoft/Microsoft SQL Server/80/Tools/ClientSetup" "SQLPath"
;从注册表中读取当前电脑的名称
ReadRegStr $R2 HKLM "SYSTEM/CurrentControlSet/Control/ComputerName/ComputerName" "ComputerName"
;将附加数据库的命令写入到文本中
FileOpen $R3 "$INSTDIR/detach_db.sql" w
FileWrite $R3 "USE master"
FileWriteByte $R3 "13"
FileWriteByte $R3 "10"
FileWrite $R3 "GO"
FileWriteByte $R3 "13"
FileWriteByte $R3 "10"
FileWrite $R3 "exec sp_detach_db @dbname = N$/'数据库名称$/'"
FileWriteByte $R3 "13"
FileWriteByte $R3 "10"
FileClose $R3
;利用临时文件存储执行SQL语句的运行结果
GetTempFileName $R0
DetailPrint "正在分离3W-iSystem数据库..."
;无窗口执行CMD命令
nsExec::ExecToLog '"$R1/Binn/isql.exe" -U "sa" -P "123456" -S  "$R2/MSDE实例名" -d master -i "$INSTDIR/detach_db.sql" -o "$R0" -b'
Sleep 500
DetailPrint "数据库分离成功..."

 

FunctionEnd

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
你可以使用Qt Installer Framework来生成NSIS脚本。以下是一些基本步骤: 1. 安装Qt Installer Framework 2. 创建一个安装程序项目 3. 在项目中定义所需的组件和安装程序页面 4. 生成安装程序脚本 下面是一个示例脚本,用于创建一个基本的安装程序: ``` # Installer script for My Application # Include the NSIS header file !include "MUI2.nsh" # Define the application name and version !define APPLICATION_NAME "My Application" !define APPLICATION_VERSION "1.0" # Define the installation path InstallDir "$PROGRAMFILES\${APPLICATION_NAME}" # Define the components to install !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY # Define the start menu shortcut !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\${APPLICATION_NAME}" !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "StartMenuShortcut" !insertmacro MUI_STARTMENUPAGE # Define the finish page !insertmacro MUI_PAGE_FINISH # Define the uninstaller page !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES # Define the installation section Section # Set the installation path SetOutPath "$INSTDIR" # Copy files to the installation directory File "MyApplication.exe" File "Readme.txt" # Create start menu shortcut CreateDirectory "$SMPROGRAMS\${APPLICATION_NAME}" CreateShortCut "$SMPROGRAMS\${APPLICATION_NAME}\${APPLICATION_NAME}.lnk" "$INSTDIR\MyApplication.exe" SectionEnd ``` 你可以根据需要修改此脚本,并使用Qt Installer Framework生成NSIS安装程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疾风铸境

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值