http://nsis.sourceforge.net/NSISLog_plug-in http://www.johnsadventures.com/archives/2005/11/my_installer_fixation_and_nsis.html http://nsis.sourceforge.net/Installing_the_Microsoft_.NET_Framework http://msdn2.microsoft.com/en-us/library/ms144259.aspx http://blogs.msdn.com/sanchan/archive/2006/05/28/609097.aspx http://forums.winamp.com/showthread.php?s=5e77de02f166ae327b2c8fbd0e1b908a&threadid=275340&highlight=run+sql+script !include WinVer.nsh !include x64.nsh ;======================================================= !macro CHECK_MIN_WIN_VER var /GLOBAL WIN_VER_PASSED ;Win98? var /GLOBAL WIN_SERVICEPACK_PASSED ;Win2kSP3 var /GLOBAL SQL_SERVICEPACK_PASSED ;Win2kSP4,Win2k3SP1,WinXPSP2 StrCpy $WIN_VER_PASSED “1? StrCpy $WIN_SERVICEPACK_PASSED “1? StrCpy $SQL_SERVICEPACK_PASSED “1? ReadRegDWORD $R0 HKLM “System\CurrentControlSet\Control\Windows” “CSDVersion” IntOp $R0 $R0 / 256 ;get service pack major version ${If} ${IsWin2000} ${If} $R0 < “3? ; SP3 StrCpy $WIN_SERVICEPACK_PASSED “0? ${ElseIf} $R0 < “4? ; SP4 StrCpy $SQL_SERVICEPACK_PASSED “0? ${EndIf} ${ElseIf} ${IsWin2003} ${If} $R0 < “1? ; SP1 StrCpy $SQL_SERVICEPACK_PASSED “0? ${EndIf} ${ElseIf} ${IsWinXP} ${If} $R0 < “2? ; SP2 StrCpy $SQL_SERVICEPACK_PASSED “0? ${EndIf} ${ElseIf} ${AtMostWin2000} StrCpy $WIN_VER_PASSED “0? ${EndIf} !macroend ;======================================================= !macro CHECK_ADMIN_RIGHTS var /GLOBAL USER_ADMIN_PASSED ;Administrator StrCpy $USER_ADMIN_PASSED “1? userInfo::getAccountType pop $0 ${If} $0 != “Admin” StrCpy $USER_ADMIN_PASSED “0? ${EndIf} !macroend !macro MSI_INSTALL installer_path ;install msi version 3 GetDllVersion “$SYSDIR\msi.dll” $1 $2 IntOp $3 $1 / 0×00010000 IntOp $4 $1 & 0×0000FFFF ;IntOp $5 $2 / 0×00010000 ;IntOp $6 $2 & 0×0000FFFF StrCpy $0 ‘$3.$4' IntCmp $0 “3.1? MSI_NO_INSTALL MSI_INSTALL MSI_NO_INSTALL MSI_INSTALL: ;may be 3.0 or 3.1 SetDetailsPrint both DetailPrint “Updating Windows Installer” SetDetailsPrint none !insertmacro EXEC_SUBINSTALLER “Windows Installer 3.1? \ ‘”${installer_path}\WindowsInstaller-KB893803-v2-x86.exe” /quiet /norestart’ MSI_NO_INSTALL: !macroend ;======================================================= !macro MDAC_INSTALL installer_path StrCpy $1 “0? ReadRegStr $1 HKLM “SOFTWARE\Microsoft\DataAccess” “Version” StrCpy $2 $1 3 ;e.g. $2 is now “2.5? ${If} $2 == “” Goto MDACNOTFOUND ${ElseIf} $2 == “2.1? Goto MDACNOTFOUND ${ElseIf} $2 == “2.5? Goto MDACNOTFOUND ${ElseIf} $2 == “2.6? Goto MDACNOTFOUND ${ElseIf} $2 == “2.7? Goto MDACNOTFOUND ${Else} ;must be greater Goto MDACCORRECT ${EndIf} MDACCORRECT: StrCpy $0 “0? Goto EXITFUNCTION MDACNOTFOUND: StrCpy $0 “1? Goto EXITFUNCTION EXITFUNCTION: ;is mdace same version ${If} $0 == “1? ;Less Than ;Install MDAC SetDetailsPrint both DetailPrint “Installing MDAC” SetDetailsPrint none !insertmacro EXEC_SUBINSTALLER “Microsoft Data Access Components 2.8? \ ‘”${installer_path}\mdac_typ.exe” /Q:A /C:”dasetup /Q:D /N”‘ ;SetRebootFlag True not needed after runonce test ${EndIf} !macroend ;======================================================= !macro NET_INSTALL installer_path ;Check for framework 2.0————————————– StrCpy $1 “0? ReadRegDword $1 HKLM “SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727? “Install” ${If} $1 != “1? ${If} ${RunningX64} StrCpy $9 ‘”${installer_path}\netfx64.exe” /q /c:”install.exe /qb /noaspupgrade”‘ ${Else} StrCpy $9 ‘”${installer_path}\dotnetfx2.0.exe” /q /c:”install.exe /qb /noaspupgrade”‘ ${EndIf} SetDetailsPrint both DetailPrint “Installing .Net Framework” SetDetailsPrint none !insertmacro EXEC_SUBINSTALLER “Microsoft .Net Framework 2.0? $9 ${EndIf} !macroend ;======================================================= !macro IS_SQL_INSTALLED instance_name return strcpy ${return} “0? ReadRegStr $0 HKLM “SOFTWARE\Microsoft\Microsoft SQL Server\${instance_name}\MSSQLServer\CurrentVersion\” CurrentVersion ${If} $0 != “” ;should = 9.if 2005 8. if 2000 strcpy ${return} “1? ${EndIf} !macroend !macro SQL_INSTALL installer_path instance_name password install_dir settings_file ;Check for existing instance AddSize 358400 ReadRegStr $0 HKLM “SOFTWARE\Microsoft\Microsoft SQL Server\${instance_name}\MSSQLServer\CurrentVersion\” CurrentVersion ${If} $0 == “” ;should = 9.if 2005 8. if 2000 !insertmacro EXEC_SUBINSTALLER “Microsoft SQL Server 2005 Express Edition” \ ‘”${installer_path}\SQLEXPR.EXE” /settings ${settings_file} /qb INSTANCENAME=${instance_name} SAPWD=${password} INSTALLSQLDIR=”${install_dir}”‘ ${EndIf} !macroend ;=======================================================