Comment: .NET Application Setup Project
 
[DEFINE REGION: Check Application Requirements]
Get System Setting Windows XP into CHECKSYSTEM
if Variable CHECKSYSTEM not Equals TRUE
  MessageBox: $TITLE$ Setup Error, This product requires at least Windows XP.$NEWLINE$$NEWLINE$Setup cannot continue.
  Terminate Installation
end
[END REGION]
 
[DEFINE REGION: Check/Install Application Pre-Requisites]
 
[DEFINE REGION: Check Application Pre-Requisites]
Comment: Check setup pre-requisites
Set Variable PREREQ to FALSE
Set Variable PRELIST to 
[compiler if Variable BUILDMODE not Equals PATCH]
if Variable NEEDSUPGRADE Equals TRUE
  Set Variable PREREQ to TRUE
  Set Variable PRELIST to $PRELIST$$NEWLINE$Previous Version Uninstallation
end
[compiler end]
[END REGION]
 
[DEFINE REGION: Install Application Pre-Requisites]
Comment: Install setup pre-requisites
if Variable PREREQ not Equals FALSE
  Display Dialog: prereq, wait for dialog to return (modal)
  if Variable WIZARD Equals CANCEL
    Terminate Installation
  end
  Display Dialog: progressprereq, use as progress dialog (non-modal)
  [compiler if Variable BUILDMODE not Equals PATCH]
  if Variable NEEDSUPGRADE Equals TRUE
    Set Variable REMOVEOLD to 
    Set Variable ERROROLD to 
    Install/Remove MSI Package $PRODUCTCODE$[REMOVE=ALL] (get result into variable REMOVEOLD)
    if Variable REMOVEOLD Equals ERROR
      MessageBox: $TITLE$ Setup, Unable to uninstall old version of $TITLE$. Please uninstall it yourself using Control Panel Add-Remove Programs before attempting to install this product.$NEWLINE$$NEWLINE$$ERROROLD$
      Terminate Installation
    end
    if Variable REMOVEOLD Equals REBOOT
      MessageBox: $TITLE$ Setup, Your computer needs to be restarted before $TITLE$ Setup can continue.$NEWLINE$$NEWLINE$Please save your work in all running programs and click OK to restart your computer. Setup will resume once your computer restarts.$NEWLINE$$NEWLINE$If you click CANCEL, setup will exit. You will have to run setup again at a later time to install $TITLE$.
      if Variable REBOOTNOW Equals OK
        Reboot Computer and Resume Setup
      else
        Terminate Installation
      end
    end
    Set Variable MAINTENANCE to FALSE
  end
  [compiler end]
  Hide Dialog
end
[END REGION]
 
[END REGION]
 
[DEFINE REGION: Define Setup Globals]
Comment: Define Setup Components
Define Component: SQL-Detect-XP
 
Comment: Initialize Setup Globals
Get System Setting Windows NT Kernel (NT4, 2000, XP, 2003, Vista, 2008, 7, 2008 R2, 8, 2012) into ISNT
Get Folder Location System->Profiles Directory into PROGRAMFILES
Get Common Folder Location System->Profiles Directory into COMMONFILES
Get Common Folder Location Start Menu->Start Menu Group into SHORTCUTFILESALL
Get Folder Location Start Menu->Start Menu Group into SHORTCUTFILES
if Variable SHORTCUTFILESALL Equals 
  Set Variable SHORTCUTFILESALL to $SHORTCUTFILES$
end
Get Folder Location System->CD Burning Directory into DESKTOPDIR
Get Folder Location System->Templates Directory into WINDIR
Get Folder Location System->Send To Directory into WINSYSDIR
Get Folder Location System->Windows Directory into QUICKLAUNCHDIR
Get Folder Location Taskbar->Quick Launch Directory into WWWROOTDIR
[END REGION]
 
[DEFINE REGION: Setup User Interview]
if Variable MAINTENANCE Equals TRUE
  GoTo Label: Maintenance
else
  [compiler if Variable BUILDMODE not Equals PATCH]
  Comment: First Time Install
  Set Variable TARGETDIR to $PROGRAMFILES$\$TITLE$
  Set Variable STARTMENU to $TITLE$
  [compiler end]
end
 
label: Welcome Dialog
Display Dialog: welcome, wait for dialog to return (modal)
if Variable WIZARD Equals CANCEL
  GoTo Label: Main Install
end
[compiler if Variable BUILDMODE not Equals PATCH]
label: License Check
Display Dialog: licensecheck, wait for dialog to return (modal)
if Variable WIZARD Equals BACK
  GoTo Label: Welcome Dialog
else
  if Variable WIZARD Equals CANCEL
    GoTo Label: Main Install
  end
end
label: ReadMe Information
Display Dialog: readme, wait for dialog to return (modal)
if Variable WIZARD Equals BACK
  GoTo Label: License Check
else
  if Variable WIZARD Equals CANCEL
    GoTo Label: Main Install
  end
end
label: User Registration
Display Dialog: registration, wait for dialog to return (modal)
if Variable WIZARD Equals BACK
  GoTo Label: ReadMe Information
else
  if Variable WIZARD Equals CANCEL
    GoTo Label: Main Install
  end
end
label: Setup Type
Display Dialog: setuptype, wait for dialog to return (modal)
if Variable WIZARD Equals BACK
  GoTo Label: User Registration
else
  if Variable WIZARD Equals CANCEL
    GoTo Label: Main Install
  end
end
Comment: TO-DO: Customize your minimum setup here
if Variable MINIMUM Equals TRUE
  Deselect Component: SQL-Detect-XP
else
  if Variable COMPLETE Equals TRUE
    Select Component: SQL-Detect-XP
  end
end
label: Custom Setup
Display Dialog: componentstree (if variable PERSONALIZED is TRUE), wait for dialog to return (modal)
if Variable WIZARD Equals BACK
  GoTo Label: Setup Type
else
  if Variable WIZARD Equals CANCEL
    GoTo Label: Main Install
  end
end
label: Select SQL Server
MessageBox: Before SQL Detection, Value of TARGETDIR:$NEWLINE$$NEWLINE$$TARGETDIR$
Display Dialog: progress, use as progress dialog (non-modal)
 
 
 
 
[DEFINE REGION: Initialize Varibles]
Set Variable SELECTEDSERVER to 
Set Variable OLDSELECTEDSERVER to 
Set Variable AVAILABLESERVERS to 
Set Variable SQLUSER to 
Set Variable SQLTEST to 
Set Variable SQLPORT to 1433
Set Variable WINDOWS to TRUE
Set Variable SERVER to FALSE
Set Variable SQLPASSWORD to 
Set Variable VALIDSQLCONNECTION to FALSE
Set Variable REQUIRESDB to TRUE
Set Variable REQUIRESDB to TRUE
[END REGION]
 
[DEFINE REGION: Detect SQL Server Instances]
Comment: Display progress dialog (detection may take a few moments)
Comment: Display Dialog: sqlscan, use as progress dialog (non-modal)
 
Detect MS SQL Instances : get result into variable AVAILABLESERVERS
 
MessageBox: Right After Detect MS SQL Instances, Value of TARGETDIR:$NEWLINE$$NEWLINE$$TARGETDIR$
 
Comment: If the Cancel button was clicked during progress, exit immediately
if Variable ABORT Equals TRUE
  Terminate Installation
end
 
Comment: Trim the last new line character out of the list of servers
Parse String $AVAILABLESERVERS$ into Variables AVAILABLESERVERS and  (Split at last occurrence of pattern)
MessageBox: After First Parse String, Value of TARGETDIR:$NEWLINE$$NEWLINE$$TARGETDIR$
 
Comment: Obtain the first server from the list of servers to initialize default server selection
Parse String $AVAILABLESERVERS$ into Variables SELECTEDSERVER and  (Split at first occurrence of pattern)
MessageBox: After Second Parse String, Value of TARGETDIR:$NEWLINE$$NEWLINE$$TARGETDIR$
 
Comment: Hide the progress dialog
Hide Dialog
[END REGION]
 
[DEFINE REGION: Show SQL Connection Dialog]
Comment: Define loop for selecting SQL Server
 
Comment: Display list of servers and optional connection fields
Display Dialog: sqlinstance, wait for dialog to return (modal)
 
if Variable WIZARD Equals BACK
  Set Variable SELECTEDSERVER to 
  GoTo Label: Select SQL Server
else
  if Variable WIZARD Equals CANCEL
    Comment: Immediately exit if canceled
    Terminate Installation
  end
end
[END REGION]
 
[DEFINE REGION: Test SQL connection]
if Variable REQUIRESDB Equals TRUE
  Comment: Display connection progress dialog (testing the connection can take a few moments)
  Display Dialog: sqlwait, use as progress dialog (non-modal)
   
  Comment: Obtain the SQL Server machine name and instance name
  Parse String $SELECTEDSERVER$ into Variables SERVERNAME and INSTANCENAME (Split at first occurrence of pattern)
  if Variable SERVERNAME Equals .
    Get System Setting Logged on Computer Name into SERVERNAME
  end
   
  Comment: Commented out for Case 9152
   
  if Variable SERVERNAME Equals 
    if Variable INSTANCENAME Equals (Ignore Case) SQLEXPRESS
      Set Variable SELECTEDSERVER to .\SQLEXPRESS
    end
  end
  if Variable INSTANCENAME Equals 
    if Variable SERVERNAME Equals (Ignore Case) SQLEXPRESS
      Set Variable SELECTEDSERVER to .\SQLEXPRESS
    end
  end
   
  Comment: End Case 9152 Comment Out
  Comment: 2013-02-20 - We currently wil not be using the PORT it does not seem to work with any syntax
   
  if Variable INSTANCENAME not Equals 
    Set Variable SQLPORT to 
  else
    Set Variable SQLPORT to ,$SQLPORT$
  end
   
  Comment: If Windows Authentication has been selected, set an empty user name
  if Variable WINDOWS Equals TRUE
    Comment: An empty user name instructs the MS SQL Server plug-in to use Windows authentication
    Set Variable SQLUSER to 
    Comment: A non-empty user name instructs the MS SQL Server plug-in to use Server authentication
  end
   
  Comment: Test the connection
  Microsoft SQL Server Script : Connect to database master on instance $SERVERNAME$\$INSTANCENAME$ as user $SQLUSER$ (get result into variable SQLTEST)
  if Variable ABORT Equals TRUE
    Comment: Exit immediately if cancelled
    Terminate Installation
  end
   
  Comment: Testing complete
  if Variable SQLTEST Equals SUCCESS
    Set Variable SQL_VERSION to 
    Set Variable SQL_ERR_MSG to 
    Microsoft SQL Server Script : Connect to database master on instance $SERVERNAME$\$INSTANCENAME$ as user $SQLUSER$ (get result into variable SQL_VERSION)
    if Variable SQL_VERSION not Equals SUCCESS
      Parse String $SQL_VERSION$ into Variables SQL_ERR_MSG and JUNK (Split at first occurrence of pattern)
      MessageBox: Microsoft SQL Server, $SQL_ERR_MSG$$NEWLINE$$NEWLINE$Select Retry to choose another SQL Server.$NEWLINE$$NEWLINE$Cancel Terminates the Installation.
      if Variable WIZARD Equals CANCEL
        GoTo Label: Main Install
      else
        Set Variable SELECTEDSERVER to 
        GoTo Label: Select SQL Server
      end
    end
    MessageBox: Success!, Connection test was successful.
    Hide Dialog
  else
    MessageBox: Error!, Connection Failed. Would you like to try again?  (Note: Cancel will exit the installation)
    Hide Dialog
    if Variable WIZARD Equals RETRY
      Comment: Test failed, and retry desired; loop back to the connection dialog
      Set Variable SELECTEDSERVER to 
      GoTo Label: Select SQL Server
    else
      Terminate Installation
    end
  end
end
[END REGION]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MessageBox: After SQL Detection, Value of TARGETDIR:$NEWLINE$$NEWLINE$$TARGETDIR$
label: Destination Directory
Display Dialog: destination, wait for dialog to return (modal)
if Variable WIZARD Equals BACK
  GoTo Label: Custom Setup
else
  if Variable WIZARD Equals CANCEL
    GoTo Label: Main Install
  end
end
label: Start Menu
Display Dialog: startmenu, wait for dialog to return (modal)
if Variable WIZARD Equals BACK
  GoTo Label: Destination Directory
else
  if Variable WIZARD Equals CANCEL
    GoTo Label: Main Install
  end
end
[compiler end]
label: Start Installation
Display Dialog: startinstallation, wait for dialog to return (modal)
if Variable WIZARD Equals BACK
  [compiler if Variable BUILDMODE not Equals PATCH]
  GoTo Label: Start Menu
  [compiler else]
  GoTo Label: Welcome Dialog
  [compiler end]
else
  GoTo Label: Main Install
end
 
label: Maintenance
Comment: Maintenance Install/Uninstall
wizard loop
Display Dialog: maintenance, wait for dialog to return (modal)
Display Dialog: componentstree (if variable MODIFY is TRUE), wait for dialog to return (modal)
Display Dialog: startinstallation, wait for dialog to return (modal)
end
[END REGION]
 
[DEFINE REGION: Process (Un)Installation]
label: Main Install
Comment: Exit Setup if Wizard Loop cancelled
if Variable WIZARD Equals CANCEL
  Terminate Installation
end
 
Comment: Prepare to install
Set Variable PROGRESSTEXT to Installing $TITLE$
Set Variable SUCCESS to 
Set Variable LASTERROR to 
if Variable ALLUSERS Equals TRUE
  Set Variable SHORTCUTFOLDER to $SHORTCUTFILESALL$\$STARTMENU$
else
  Set Variable SHORTCUTFOLDER to $SHORTCUTFILES$\$STARTMENU$
end
Display Dialog: progress, use as progress dialog (non-modal)
 
Comment: Modify Target System
[DEFINE REGION: Perform Uninstallation]
if Variable REMOVE Equals TRUE
  Comment: Uninstall product
  Comment: TO-DO: Insert any additional uninstall commands here
  Apply Uninstall (get result into variable SUCCESS)
  Set Variable PROGRESS to 100
else
  [END REGION]
  [DEFINE REGION: Perform First Time or Maintenance Installation]
  Comment: Install/Re-Install product
  Create Shortcut $SHORTCUTFOLDER$\Uninstall #TITLE# to $UNINSTALLLINK$
  [OFFLINE CONTENT]
  [DEFINE WEB MEDIA SQL-Detect-XP]
  Get Component SQL-Detect-XP Selection State into Variable SELECTED
  if Variable SELECTED Equals TRUE
  end
  Comment: TO-DO: Insert any additional install commands here
  [compiler if Variable BUILDMODE Equals PATCH]
  Apply Patch (get result into variable SUCCESS)
  [compiler else]
  if Variable ADVERTISE Equals TRUE
    Apply Advertised (get result into variable SUCCESS)
  else
    Apply Install (get result into variable SUCCESS)
  end
  [compiler end]
  Set Variable PROGRESS to 100
end
[END REGION]
[END REGION]
 
[DEFINE REGION: Finish Setup]
Comment: End of Installation
Hide Dialog
Display Dialog: finish, wait for dialog to return (modal)
if Variable SILENT Equals FALSE
  if Variable REBOOTCOMPUTER Equals TRUE
    if Variable SUCCESS Equals REBOOT
      Reboot Computer
    end
  end
  if Variable RUNAPP Equals TRUE
    if Variable REMOVE Equals FALSE
      if Variable SUCCESS Equals COMPLETE
        Comment: TO-DO: Insert command that starts your application here
      end
    end
  end
end
[END REGION]
 
