home *** CD-ROM | disk | FTP | other *** search
/ CD Shareware Magazine 1996 December / CD_shareware_12-96.iso / WINNT / INTERNET / WEBADMIN.ZIP / WEBADMIN.EXE / SetupAdm.inf < prev    next >
Encoding:
INI File  |  1996-08-06  |  43.5 KB  |  1,475 lines

  1. ;---------------------------------------------------------------------------------
  2. ; Web based Administration for Microsoft Windows NT Server
  3. ; --------------------------------------------------------
  4. ;  
  5. ;    These files must exist:
  6. ;
  7. ;    ./SETUPADM.BAT            the shell script that calls this file
  8. ;    ./SETUPADM.INF            this file (of course)
  9. ;
  10. ;
  11. ;
  12. ;     IMPORTANT SECTIONS  - Search for Section # (Section 2)
  13. ;     ------------------------------------------------------
  14. ;     1)  Variable Declaration
  15. ;     2)  Control Flow code
  16. ;     3)  File copy section
  17. ;    3a)  File copy add section
  18. ;    3b)  Create Directories here
  19. ;     4)  Registry definitions
  20. ;    4a)  Registry add section
  21. ;
  22. ;
  23. ;     OTHER SECTIONS OF INTEREST - Search for Section " (Section B)
  24. ;     -------------------------------------------------------------
  25. ;     A) Strings used by dialogs and error messages
  26. ;     B) Dialog Section
  27. ;     C) Test for IIS
  28. ;
  29. ;    
  30. ;     * Search for WORDPAD to alter where word pad defaults.  (HACKHACK)
  31. ;     Also we use the short directory name, because long directory names 
  32. ;     dont work.  THIS COULD BE A PROBLEM.
  33. ;
  34. ;---------------------------------------------------------------------------------
  35.  
  36.  
  37. ;***********************************************************************
  38. ; SOURCE MEDIA DESCRIPTION            
  39. ; ------------------------
  40. ;***********************************************************************
  41. [Source Media Descriptions]
  42.     1 = "Disk containing Web based Administration files."
  43.  
  44.  
  45. ;***********************************************************************
  46. ; CONSTANTS FOR USING DIALOGS
  47. ;***********************************************************************
  48. [GeneralConstants]
  49.  
  50.     ;
  51.     ; Constants to support the use of radio button dialogs
  52.     ;
  53.     Radio1  = "1"
  54.     Radio2  = "2"
  55.     Radio3  = "3"
  56.     Radio4  = "4"
  57.     Radio5  = "5"
  58.     Radio6  = "6"
  59.     Radio7  = "7"
  60.     Radio8  = "8"
  61.     Radio9  = "9"
  62.  
  63.     ;
  64.     ; Constants to support the use of checkbox dialogs
  65.     Chosen    = "ON"
  66.     NotChosen = "OFF"
  67.  
  68.  
  69. [RegistryConstants]
  70.     MaskAllAccess = 33554432
  71.     NoTitle       = 0
  72.     RegLastError  = $(!REG_ERROR_SUCCESS)
  73.  
  74.  
  75.  
  76. ;************************************************************************
  77. ; CONFIGURATION CHOICES
  78. ; ---------------------
  79. ; the sections below contain the different choices supported for
  80. ; the configuration items shown.  an id section establishes the
  81. ; language independent IDs supported by nt setup.  for each language
  82. ; supported a text section displays the text used for the different
  83. ; choices
  84. ;************************************************************************
  85.  
  86. ;********************************
  87. ; PLATFORM INDEPENDENT CHOICES
  88. ;********************************
  89. ;**************************************************************
  90. ; LANGUAGE CHOICES-- this is all you get,,,
  91. ;**************************************************************
  92.  
  93. [LanguageID]
  94.     LANGID_ENG = ENG
  95.  
  96. ;**************************************************************
  97. ; PROCESSOR CHOICES
  98. ;**************************************************************
  99. [ProcessorID]
  100.     ProcessorID_I386  = I386
  101.     ProcessorID_I486  = I486
  102.     ProcessorID_I586  = I586
  103.     ProcessorID_R4000 = R4000
  104.     ProcessorID_Alpha = Alpha_AXP
  105.     ProcessorID_PPC601 = PPC601
  106.     ProcessorID_PPC603 = PPC603
  107.     ProcessorID_PPC604 = PPC604
  108.     ProcessorID_PPC620 = PPC620
  109.  
  110. ;**************************************************************
  111. ; PLATFORM CHOICES
  112. ;**************************************************************
  113. [PlatformID]
  114.     PlatformID_I386 = I386
  115.     PlatformID_Mips = Mips
  116.     PlatformID_Alpha = Alpha
  117.     PlatformID_ppc = ppc
  118.  
  119. ;**************************************************************
  120. ;  UI VARIABLES
  121. ;**************************************************************
  122.  
  123. [ProcessorVar]
  124.  
  125.     STF_PROCESSOR = "" ? $(LIBHANDLE) GetProcessor
  126.     STF_PLATFORM  = ""
  127.  
  128. [LocaleVar]
  129.  
  130. [LanguageVar]
  131.     ;
  132.     ; Language to Use For interaction with user
  133.     ;
  134.     STF_LANGUAGE       = "" ? $(LIBHANDLE) GetLanguage
  135.  
  136.  
  137. [UiVars]
  138.  
  139.     ;
  140.     ; Destination TOOLS Drive Particulars
  141.     ;
  142.     VolumeList      = {} ? $(LIBHANDLE) GetHardDriveLetters
  143.     VolumeFreeList  = {} ? $(LIBHANDLE) GetHardDriveFreeSpace
  144.     VolumeFSList    = {} ? $(LIBHANDLE) GetHardDriveFileSystems
  145.     DestVolume      = ""
  146.     ;
  147.  
  148.  
  149.     ; Windows NT Directory
  150.     ;
  151.  
  152.     STF_WINDOWSPATH    = "" ? $(!LIBHANDLE) GetWindowsNtDir
  153.     STF_WINDOWSSYSPATH = "" ? $(!LIBHANDLE) GetWindowsNtSysDir
  154.     STF_WINDOWSVERSION = "" ? $(!LIBHANDLE) GetWindowsNtVersion
  155.  
  156.  
  157.     ;
  158.     ; Installation mode
  159.     ;
  160.  
  161.     MinInteract         = $(Radio1)
  162.     MaxInteract         = $(Radio2)
  163.     STF_INSTALL_MODE    = $(MinInteract)
  164.     
  165.  
  166.  
  167. [EnvironmentVars]
  168.     ;
  169.     ; user environment variables in the current user's profile
  170.     ; that we are concerned about
  171.  
  172.     PathEnvVar     = {} ? $(LIBHANDLE) GetEnvVar $(PRIVILEGES) Path
  173.     InitEnvVar     = {} ? $(LIBHANDLE) GetEnvVar $(PRIVILEGES) init
  174.  
  175.  
  176. [VarsPlatformCommon]
  177.     ;
  178.     ; Installation options
  179.     ;
  180.  
  181.     ;
  182.     ; Options to disable
  183.     ;
  184.     DisableList = {}
  185.  
  186.  
  187. [VarsI386]
  188.     ;
  189.  
  190. [VarsMips]
  191.     ;
  192.  
  193. [VarsAlpha]
  194.     ;
  195.  
  196. [Varsppc]
  197.     ;
  198.  
  199.  
  200. ;---------------------------------------------------------------------------------
  201. ;                                 Section A
  202. ;
  203. ; Web Admin strings for use by dialogs
  204. ;
  205. ;---------------------------------------------------------------------------------
  206.  
  207.  
  208. [StringsENG]
  209.     String1 = "Setup cannot install on the current processor."$(!LF)$(!LF)+
  210.           "Cannot proceed with install."
  211.  
  212.     String2 = "Please enter the full path of the directory into which "$(!LF)+
  213.            "the "$(!ProductName)" should be installed. Then choose Continue."
  214.  
  215.     String3 = $(!ProductName)" files not found."$(!LF)+
  216.       "Please enter the directory path to the "$(!ProductName)" setup files."
  217.  
  218.     String4 = "Setup couldn't copy the "$(!ProductName)" files. "$(!LF)$(!LF)+
  219.           "Cannot proceed with install."
  220.  
  221.     String5 = "'"$(EditTextOut)"' is not a valid path!  Please try again."
  222.  
  223.     String6 = "Error processing path entered.  Please reenter the path."
  224.  
  225.     String7 = ""
  226.  
  227.     String8  = "Size required for full installation is: "
  228.     String9  = "Minimum size required for custom installation is: "
  229.     String10 = " MB.  "
  230.     String11 = "No drive was found with this much space."$(!LF)$(!LF)+
  231.         "Cannot proceed with install."
  232.  
  233.     String12 = "The Microsoft "$(!ProductName)" is not completely installed."$(LF)$(LF)+
  234.         "  Are you sure you want to exit Setup?"
  235.  
  236.     String13 = "Setup needs a full path specification of your destination.  Please "+
  237.         "reenter a new path.  An example of af full path is: "
  238.  
  239.     String14 = "The following directory does not exist."$(LF)
  240.  
  241.     String15 = $(LF)$(LF)"Would you like to create it?"
  242.     String16 = "You must have Microsoft Internet Information Server Installed!"
  243.     String17 = "This product requires Microsoft Windows NT Server to be installed!"
  244.     String18 = "Invalid WWWRoot directory."
  245.     String19 = "Invalid Scripts directory."
  246.  
  247.  
  248. ;---------------------------------------------------------------------------------
  249. ; end
  250. ;---------------------------------------------------------------------------------
  251.  
  252.  
  253. ;--------------------
  254. ; BILLBOARD MESSAGES
  255. ;--------------------
  256. [BillboardsENG]
  257. Billboard1 = "Please wait while Setup creates directories on the destination drive."
  258. Billboard2 = "Please wait while Setup installs data into your registry."$(LF)$(LF)+
  259.         "Please be patient, this may take a few minutes."
  260.  
  261.  
  262. ;---------------------------------------------------------------------------------
  263. ;                                 Section B
  264. ;
  265. ; Web Admin dialogs pre-defined by NT I.E 2.0
  266. ;
  267. ;---------------------------------------------------------------------------------
  268.  
  269.  
  270. ;***************************************************************************
  271. ; DIALOGS
  272. ; -------
  273. ; the following sections contain the dialogs used to interact with the user.
  274. ; for each language supported there is a different dialog section.
  275. ;***************************************************************************
  276.  
  277.  
  278. ;**************************************************************
  279. ; WELCOME DIALOG
  280. ;**************************************************************
  281. [WelcomeDlgENG]
  282.     DlgType     = Info
  283.     DlgTemplate = WELCOME
  284.     Caption     = $(!ProductName)
  285.     
  286.     DlgText     = "Welcome to Setup."$(LF)$(LF)+
  287.     "This Setup program "+
  288.     "installs the "$(!ProductName)". "$(LF)$(LF)+
  289.     "To install the "$(!ProductName)" on your "+
  290.     "computer now, click Continue "+
  291.     "or press Enter."$(LF)$(LF)+
  292.     "To exit Setup without installing, click Exit "+
  293.     "or press F3."
  294.  
  295.     Continue     = &Continue
  296.     Help         = &Help
  297.     Exit         = E&xit
  298.     HelpContext  = $(!IDH_DB_MSTWELCOME_INS)
  299.  
  300.  
  301.  
  302. ;**************************************************************
  303. ; SETUP DONE - RESTART DIALOG
  304. ;**************************************************************
  305. [SetupDoneDlgENG]
  306.     DlgType     = "Info"
  307.     DlgTemplate = "RESTART"
  308.     Caption     = $(!ProductName)" Setup"
  309.     DlgText     = $(!ProductName)" is now installed."$(LF)$(LF)+
  310.           "Please exit to Windows NT."
  311.     Windows     = "Exit to &Windows"
  312.  
  313. ;**************************************************************
  314. ; SETUP NOT DONE - RESTART DIALOG
  315. ;**************************************************************
  316. [SetupNotDoneDlgENG]
  317.     DlgType     = "Info"
  318.     DlgTemplate = "NONFATAL"
  319.     Caption     = $(!ProductName)" Setup"
  320.     DlgText     = $(!ProductName)" has "+
  321.           "not been installed. You will have to run setup again to " +
  322.           "reinstall "$(!ProductName)"."$(LF)$(LF)+
  323.           "Please exit back to Windows NT."
  324.     Windows     = "Exit to &Windows"
  325.  
  326. ;**************************************************************
  327. ; SETUP NOT DONE - Root Perms not found DIALOG
  328. ;**************************************************************
  329. [RootPermsDlgENG]
  330.     DlgType      = "MessageBox"
  331.     STF_MB_TITLE = "Fatal error: "$(!ProductName)" Setup"
  332.     STF_MB_TEXT  = "You must be logged in as ADMINISTRATOR to "+
  333.            "run this setup utility"
  334.     STF_MB_TYPE  = 1
  335.     STF_MB_ICON  = 3
  336.     STF_MB_DEF   = 1
  337.  
  338.  
  339. ;**************************************************************************
  340. ; DLL LOAD and FREE
  341. ; the following section contain commands to load specific dll libraries and
  342. ; to free them
  343. ;**************************************************************************
  344.  
  345. ;**************************************************************
  346. ; a) DETECT LIBRARY
  347. ;**************************************************************
  348. [LoadSetupLibrary]
  349.     LoadLibrary "x" $(STF_CWDDIR)setupdll.dll LIBHANDLE
  350.     exit
  351.  
  352. [FreeSetupLibrary]
  353.     FreeLibrary $(LIBHANDLE)
  354.     exit
  355.  
  356.  
  357.  
  358. ;**************************************************************************
  359. ; PROGRESS GUAGE VARIABLES
  360. ;**************************************************************************
  361.  
  362. [ProgressCopyENG]
  363.     ProCaption   = $(!ProductName)" Setup"
  364.     ProCancel    = "Cance&l"
  365.     ProCancelMsg = $(!ProductName)" is not correctly installed.  Are you sure "+
  366.            "you want to cancel copying files?"
  367.     ProCancelCap = "Setup Message"
  368.     ProText1     = "Copying:"
  369.     ProText2     = "To:"
  370.  
  371.  
  372. ;---------------------------------------------------------------------------------
  373. ;                                 Section 1
  374. ;
  375. ; Main shell section.  This is where it all starts!
  376. ;
  377. ;---------------------------------------------------------------------------------
  378.  
  379.  
  380.  
  381. ;**************************************************************************
  382. ; SHELL COMMANDS SCRIPT
  383. ;**************************************************************************
  384.  
  385. [Shell Commands]
  386.  
  387.     ; Product Information
  388.     set ProductName = "Web based Administration for Microsoft Windows NT Server"
  389.     set ProductShort = "Web based Administration"
  390.     set ProductVersion = "1.0"
  391.     set ProductDirW = "H:\inetsrv\wwwroot"
  392.     set ProductDirS = "H:\inetsrv\wwwroot"
  393.     set ProductKey = "SOFTWARE\Microsoft\Inetsrv_NTAdmin"
  394.     set ProductFileChk = "NTAdmin.htm"
  395.  
  396.  
  397.         ;
  398.     ; Initialize the app, by setting the caption and loading the support library
  399.     ;
  400.     set TestCopy = 0
  401.     set TestReg  = 0    ;-sc
  402.     set TestRegVerbose = 0
  403.     set-title $(!ProductName)" Setup"
  404.     set Exit_Code = $(!SETUP_ERROR_GENERAL)
  405.     install   LoadSetupLibrary
  406.  
  407.     StartWait
  408.  
  409.     ;
  410.     ; read general constants
  411.     ;
  412.     set-subst LF = "\n"
  413.     set-subst MQ = \047   ;047=' in octal   meta-quote 
  414.     set-subst DQ = \042   ;042=" in octal double-quote 
  415.     read-syms GeneralConstants
  416.  
  417.     ;
  418.     ; read the platform independent choices
  419.     ;
  420.     read-syms LanguageID
  421.     read-syms ProcessorID
  422.     read-syms PlatformID
  423.  
  424.     ;
  425.     ; read the default language and try to detect the language
  426.     ;
  427.     read-syms LanguageVar
  428.     detect    LanguageVar
  429.  
  430.     ;
  431.     ; read and detect the processor we are working on
  432.     ;
  433.     read-syms ProcessorVar
  434.     detect    ProcessorVar
  435.     read-syms Strings$(!STF_LANGUAGE)
  436.     detect    Strings$(!STF_LANGUAGE)
  437.     read-syms Billboards$(!STF_LANGUAGE)
  438.  
  439.     ;
  440.     ; Check processor type, see if it is supported, if so what platform does it
  441.     ; belong to.
  442.     ;
  443.     ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_I386)
  444.     set STF_PLATFORM = $(PlatformID_I386)
  445.     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_I486)
  446.     set STF_PLATFORM = $(PlatformID_I386)
  447.     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_I586)
  448.     set STF_PLATFORM = $(PlatformID_I386)
  449.     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_R4000)
  450.     set STF_PLATFORM = $(PlatformID_Mips)
  451.     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_Alpha)
  452.     set STF_PLATFORM = $(PlatformID_Alpha)
  453.     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_PPC601)
  454.     set STF_PLATFORM = $(PlatformID_ppc)
  455.     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_PPC603)
  456.     set STF_PLATFORM = $(PlatformID_ppc)
  457.     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_PPC604)
  458.     set STF_PLATFORM = $(PlatformID_ppc)
  459.     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_PPC620)
  460.     set STF_PLATFORM = $(PlatformID_ppc)
  461.     else
  462.     shell "" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String1)
  463.     ui pop 1
  464.     goto setupnotdone
  465.     endif
  466.  
  467.     read-syms  RegistryConstants
  468.  
  469.     ;
  470.     ; read the UI Variables and detect their setting on the current machine
  471.     ;
  472.     read-syms UiVars
  473.     detect    UiVars
  474.  
  475.     read-syms Vars$(STF_PLATFORM)
  476.     read-syms VarsPlatformCommon
  477.  
  478.     set WinHlpDir = $(WinDir)"\Help\"
  479.  
  480.     ;---------------------------------------------------------------------------------        
  481.     ; HACKHACK  - Set WORDPAD to the location as follows
  482.     ;---------------------------------------------------------------------------------
  483.  
  484.     split-string $(!STF_WINDOWSPATH) ":" _NtDrive
  485.     set WordPad = *($(_NtDrive), 1)":\progra~1\window~1\access~1\wordpad.exe "
  486.  
  487.     ;---------------------------------------------------------------------------------
  488.     
  489.     ; Expand env vars for temp and web directorys
  490.     LibraryProcedure SrcDir, $(!LIBHANDLE), ExpandSz *($(!STF_SRCDIR), 4)
  491.     set SrcDir = *($(!STF_SRCDIR), 1)
  492.     LibraryProcedure ProductDirW, $(!LIBHANDLE), ExpandSz $(ProductDirW)
  493.     LibraryProcedure ProductDirS, $(!LIBHANDLE), ExpandSz $(ProductDirS)
  494.  
  495.     ;Makesure all our paths have '\' at the end
  496.     LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(!STF_SRCDIR)
  497.     ifstr(i) $(STATUS) != "ERROR"
  498.     set SrcDir = $(STATUS)
  499.     endif
  500.  
  501.     LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(ProductDirW)
  502.     ifstr(i) $(STATUS) != "ERROR"
  503.     set ProductDir = $(STATUS)
  504.     endif
  505.  
  506.     LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(ProductDirS)
  507.     ifstr(i) $(STATUS) != "ERROR"
  508.     set ProductDir = $(STATUS)
  509.     endif
  510.  
  511.     LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(WinDir)
  512.  
  513.  
  514.     ifstr(i) $(STATUS) != "ERROR"
  515.     set WinDir = $(STATUS)
  516.     endif
  517.     LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(WinSysDir)
  518.     ifstr(i) $(STATUS) != "ERROR"
  519.     set WinSysDir = $(STATUS)
  520.     endif
  521.  
  522.     ;
  523.     ; Call the library function to see if we have admin privileges
  524.     ;
  525.     LibraryProcedure STATUS, $(!LIBHANDLE), TestAdmin
  526.     ifstr(i) $(STATUS) == "YES"
  527.     set UsrRootPerms = "SYSTEM"
  528.     else
  529.     set UsrRootPerms = "LOSER"
  530.     endif
  531.  
  532.     ifstr(i) $(UsrRootPerms) != "SYSTEM"
  533.     read-syms RootPermsDlg$(STF_LANGUAGE)
  534.     ui start "RootPerms"
  535.     ifstr(i) $(DLGEVENT) == "OK"
  536.        ui pop 1
  537.        goto setupnotdone
  538.     else
  539.        goto setupnotdone
  540.     endif
  541.     endif
  542.  
  543.     EndWait
  544.  
  545.  
  546. ;---------------------------------------------------------------------------------
  547. ;                                 Section 2
  548. ;
  549. ; Main program flow.  
  550. ;
  551. ;---------------------------------------------------------------------------------
  552.  
  553.  
  554.  
  555. welcome =+
  556.  
  557.     ;Check for windows NT Server - VERY IMPORTANT!!!!
  558.     ;
  559.  
  560.     ; open the key to find out serve
  561.     OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Control\ProductOptions" $(!MaskAllAccess) TempKey
  562.  
  563.     ; get and test the value
  564.     GetRegValue $(TempKey), "ProductType", KeyValue
  565.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  566.        CloseRegKey $(TempKey)
  567.     endif
  568.  
  569.     set ProductType = *($(KeyValue), 4)      
  570.  
  571.     ifstr(i) $(ProductType) == "WinNT"
  572.       shell "" SetupMessage $(!STF_LANGUAGE) NONFATAL $(String17)
  573.       ui pop 1
  574.       goto badend
  575.     endif
  576.     
  577.  
  578.  
  579.  
  580.     read-syms WelcomeDlg$(STF_LANGUAGE)
  581.     ui start "WelcomeMe"
  582.     ifstr(i) $(DLGEVENT) == "CONTINUE"
  583.     ui pop 1
  584.     goto setdestination
  585.     else-ifstr(i) $(DLGEVENT) == "EXIT"
  586.        shell "" QueryUserQuit
  587.        ifstr(i) $($R1) == "OK"
  588.       ui pop 1
  589.       goto setupnotdone
  590.        else
  591.       goto welcome
  592.        endif
  593.     else
  594.        goto end
  595.     endif
  596.  
  597.  
  598. ;---------------------------------------------------------------------------------
  599. ;                                 Section C
  600. ;
  601. ; This is where we test for the IIS directory.  This is a hard code value.
  602. ;
  603. ; If there is a problem we display a message and then go to the badend section.
  604. ;
  605. ;---------------------------------------------------------------------------------
  606.  
  607.  
  608. setdestination =+
  609.     
  610.     ; open the key
  611.     ;OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\INetStp" $(!MaskAllAccess) TempKey
  612.  
  613.     OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots\" $(!MaskAllAccess) TempKey
  614.  
  615.     ; get and test the value for wwwroot
  616.     GetRegValue $(TempKey), "/", KeyValue
  617.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  618.         GetRegValue $(TempKey), "/,", KeyValue
  619.         ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  620.             CloseRegKey $(TempKey)
  621.         endif
  622.     endif
  623.  
  624.     Split-String *($(KeyValue), 4) "," TempKey2 
  625.     set ProductDirW = *($(TempKey2), 1)      
  626.  
  627.     ; get and test the value for scripts
  628.     GetRegValue $(TempKey), "/Scripts", KeyValue
  629.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  630.         GetRegValue $(TempKey), "/Scripts,", KeyValue
  631.         ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  632.             CloseRegKey $(TempKey)
  633.         endif
  634.     endif
  635.     Split-String *($(KeyValue), 4) "," TempKey2 
  636.     set ProductDirS = *($(TempKey2), 1)      
  637.  
  638.         
  639.     ; set the product dir value to the value of the registry key and appened a back
  640.     ; slash if required.
  641.  
  642.     LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(ProductDirW)
  643.  
  644.     ifstr(i) $(STATUS) != "ERROR"
  645.     set ProductDirW = $(STATUS)
  646.     endif
  647.  
  648.     LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(ProductDirS)
  649.     
  650.     ifstr(i) $(STATUS) != "ERROR"
  651.     set ProductDirS = $(STATUS)
  652.     endif
  653.  
  654.     LibraryProcedure IsFullPath $(!LIBHANDLE) +
  655.                CheckPathFullPathSpec $(ProductDirW)
  656.     ifstr(i) $(IsFullPath) == "No"
  657.       shell "" SetupMessage $(!STF_LANGUAGE) NONFATAL $(String18)
  658.       ui pop 1
  659.       goto badend
  660.     endif
  661.  
  662.  
  663.     LibraryProcedure IsFullPath $(!LIBHANDLE) +
  664.                CheckPathFullPathSpec $(ProductDirS)
  665.     ifstr(i) $(IsFullPath) == "No"
  666.       shell "" SetupMessage $(!STF_LANGUAGE) NONFATAL $(String19)
  667.       ui pop 1
  668.       goto badend
  669.     endif
  670.  
  671.     goto setsource
  672.  
  673. ;---------------------------------------------------------------------------------
  674. ; end
  675. ;---------------------------------------------------------------------------------
  676.  
  677.  
  678. querysource =+
  679.     shell "" DoAskPathEx $(!STF_SRCDIR) $(String3) $(String6)
  680.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  681.     ;Debug-Output "SETUPADM.INF: shelling DoAskPathEx failed"
  682.     goto setupnotdone
  683.     endif
  684.     ifstr(i) $($R0) == STATUS_SUCCESSFUL
  685.     set SrcDir = $($R1)
  686.     else
  687.     ;Debug-Output "SETUPADM.INF: User cancelled asking source."
  688.     goto setupnotdone
  689.     endif
  690.  
  691. setsource =+
  692.     set FileToCheck = $(!STF_SRCDIR)$(!ProductFileChk)
  693.     Debug-Output "SETUPADM.INF: checking existance of "$(FileToCheck)
  694.     LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(FileToCheck)
  695.     ifstr(i) $(STATUS) == YES
  696.        goto copystuff
  697.     else
  698.        goto querysource
  699.     endif
  700.  
  701. copystuff = +
  702.     StartWait
  703.     shell "" PushBillboard STATUSDLG $(Billboard1)
  704.     ifint $(!TestCopy) != 1
  705.     install ICreateWebAdminDir
  706.     install ICopyWebAdminFiles
  707.     endif
  708.     shell "" PopBillboard
  709.     EndWait
  710.     Debug-Output "SETUPADM.INF: Copying files from "$(!STF_SRCDIR)
  711.     Debug-Output "SETUPADM.INF: Copying files to   "$(ProductDirW)
  712.     Debug-Output "SETUPADM.INF: Copying files to   "$(ProductDirS)
  713.     Debug-Output "SETUPADM.INF: Copying files to   "$(WinSysDir)
  714.     Debug-Output "SETUPADM.INF: Copying files to   "$(WinHlpDir)
  715.  
  716. finish = +
  717.     read-syms ProgressCopy$(STF_LANGUAGE)
  718.     install Install-All-Files-Now
  719.     ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_SUCCESS"
  720.     goto doregistry
  721.     else
  722.     shell "" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String4)
  723.     ui pop 1
  724.     goto setupnotdone
  725.     endif
  726.  
  727.  
  728. ;---------------------------------------------------------------------------------
  729. ;                                 Section 4a
  730. ;
  731. ; This is where we say which registry sections get added
  732. ;
  733. ;---------------------------------------------------------------------------------
  734.  
  735. doregistry =+
  736.  
  737.     ifint $(!TestReg) == 1
  738.     shell "" DoRegistrySection "other"
  739.     goto setupdone
  740.     endif
  741.  
  742.     StartWait
  743.     shell "" PushBillboard STATUSDLG $(Billboard2)
  744.  
  745.     shell "" DoRegistrySection "WebAdmin.Add.Reg"
  746.     
  747.     shell "" PopBillboard
  748.     EndWait
  749.  
  750. ;---------------------------------------------------------------------------------
  751. ; end
  752. ;---------------------------------------------------------------------------------
  753.  
  754. setupdone=+
  755.     set Exit_Code = $(!SETUP_ERROR_SUCCESS)
  756.     read-syms SetupDoneDlg$(!STF_LANGUAGE)
  757.     EndWait
  758.     ui start "DoneWithThis"
  759.     ifstr(i) $(DLGEVENT) == "CONTINUE"
  760.       ui pop 1
  761.       goto end
  762.     else
  763.       goto end
  764.     endif
  765.  
  766. setupnotdone=+
  767.     read-syms SetupNotDoneDlg$(!STF_LANGUAGE)
  768.     EndWait
  769.     ui start "NotDoneMakingAMess"
  770.     ifstr(i) $(DLGEVENT) == "CONTINUE"
  771.       ui pop 1
  772.       goto end
  773.     else
  774.       goto end
  775.     endif
  776.  
  777. end = +
  778.     StartDetachedProcess Success "" "" $(!WordPad) $(ProductDirW)"\NTAdmin\ReadMe.doc"   
  779.   
  780.     install   FreeSetupLibrary
  781.     exit
  782.  
  783. badend = +
  784.     exit
  785.  
  786. ;---------------------------------------------------------------------------------
  787. ; end
  788. ;---------------------------------------------------------------------------------
  789.  
  790.  
  791. ;**************************************************************
  792. ; DEFAULT ROUTINES.  DO NOT TOUCH!
  793. ;
  794. ;**************************************************************
  795.  
  796. ; $0 Section name to act upon
  797. [DoRegistrySection]
  798.     set hKeyList     = ^($($0), 1)
  799.     set KeyTreeList  = ^($($0), 2)
  800.     set ValNameList  = ^($($0), 3)
  801.     set ValTypeList  = ^($($0), 4)
  802.     set ValDataList  = ^($($0), 5)
  803.  
  804.     ; build up our parameters for CreateKey. 
  805.     ; $1 - key for root hive
  806.     ; $2 - {keylist, $(NoTitle), $(AccessMask)}
  807.     ; $3 - { {ValueName1,0,$(!REG_VT_SZ),$(ValueData1)}, +
  808.     ;        {ValueName2,0,$(!REG_VT_SZ),$(ValueData2)} }
  809.     ; $4 - key for root hive
  810.     ForListDo $(hKeyList)
  811.     ifstr(i) *($(hKeyList), $(#)) == "hkcu"
  812.         set hKey = $(!REG_H_CUSER)
  813.     else-ifstr(i) *($(hKeyList), $(#)) == "hklm"
  814.         set hKey = $(!REG_H_LOCAL)
  815.     else-ifstr(i) *($(hKeyList), $(#)) == "hkcr"
  816.         set hKey = $(!REG_H_CLASSES)
  817.     endif
  818.  
  819.     ;build up our KeyList
  820.     set OurKeyList = {}
  821.     split-string *($(KeyTreeList), $(#)) "\" Tmp
  822.     ForListDo $(Tmp)
  823.         ifstr(i) $($) != "\"
  824.         set OurKeyList = >($(OurKeyList), {$($), $(!NoTitle), $(!MaskAllAccess)})
  825.         endif
  826.     EndForListDo
  827.     Debug-Output ".INF:   KeyList="$(OurKeyList)
  828.     
  829.     ;build up Value List
  830.     set SlamValueList = {}
  831.     ifcontains *($(ValTypeList), $(#)) in {"0", "2"}
  832.         set SlamValueList = >($(SlamValueList), {*($(ValNameList), $(#)), $(!NoTitle), $(!REG_VT_SZ), *($(ValDataList), $(#))})
  833.     else-ifcontains *($(ValTypeList), $(#)) in {"1", "3"}
  834.         set Numbers = {}
  835.         split-string *($(ValDataList), $(#)) "," Tmp
  836.         ForListDo $(Tmp)
  837.           ifstr $($) != ","
  838.         set-hextodec Dec = $($)
  839.         set Numbers = >($(Numbers), $(Dec))
  840.           endif
  841.         EndForListDo
  842.         set SlamValueList = >($(SlamValueList), {*($(ValNameList), $(#)), $(!NoTitle), $(!REG_VT_BIN), $(Numbers)})
  843.     else-ifcontains *($(ValTypeList), $(#)) in {"4"}
  844.         set SlamValueList = >($(SlamValueList), {*($(ValNameList), $(#)), $(!NoTitle), $(!REG_VT_DWORD), *($(ValDataList), $(#))})    
  845.     endif
  846.  
  847.  
  848.     Debug-Output ".INF: ValueList="$(SlamValueList)
  849.  
  850.     shell "" CreateKey $(hKey) $(OurKeyList) $(SlamValueList)
  851.     CloseRegKey $($R1)
  852.     
  853.     EndForListDo
  854.  
  855.     return
  856.  
  857. ;*****************************************************************
  858. ;                                                                *
  859. ;         INSTALLATION SUPPORT ROUTINES                          *
  860. ;                                                                *
  861. ;*****************************************************************
  862.  
  863. ;**************************************************************
  864. ; ROUTINE:      CreateKey
  865. ;
  866. ; DESCRIPTION:  Creates a key and fixes the values indicated.
  867. ;               Key is Handle\Key1\Key2\...\Keyn. Value list
  868. ;               is for Valuen.
  869. ;
  870. ; INPUTS:       $0: Handle into registry
  871. ;               $1: KeyTreeComponents {Key1Info, Key2Info..}
  872. ;               $2: ValueList {Value1Info, Value2Info, Value3Info}
  873. ;
  874. ; OUTPUTS:      $R0: Status: STATUS_SUCCESSFUL
  875. ;                            STATUS_FAILED
  876. ;                            STATUS_ERROR_CREATEKEY
  877. ;                            STATUS_ERROR_CREATEVALUE
  878. ;
  879. ;               $R1: Handle to created key
  880. ;
  881. ;**************************************************************
  882.  
  883. [CreateKey]
  884.     ifint $(!TestRegVerbose) == 1
  885.     Debug-Output ".INF: CreateKey $0 = "$($0)
  886.     Debug-Output ".INF: CreateKey $1 = "$($1)
  887.     Debug-Output ".INF: CreateKey $2 = "$($2)
  888.     endif 
  889.  
  890.     ;
  891.     ; Initialize
  892.     ;
  893.  
  894.     set Status = STATUS_FAILED
  895.     read-syms RegistryConstants
  896.  
  897.     ;
  898.     ; traverse down the keytreecomponents and open/create components as
  899.     ; you go along
  900.     ;
  901.  
  902.     set BaseHandle = $($0)
  903.     set KeyHandle  = $(BaseHandle)
  904.  
  905.     ForListDo $($1)
  906.  
  907.     set KeyInfo = $($)
  908.     set KeyName = *($(KeyInfo), 1)
  909.  
  910.     ;
  911.     ; Try opening the key first
  912.     OpenRegKey $(BaseHandle) "" $(KeyName) $(MaskAllAccess) KeyHandle
  913.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  914.         ;
  915.         ; Key doesn't exist
  916.         ;
  917.         ; Debug-Output "REGISTRY.INF: Key"$(KeyName)"doesn't exist.  Will create key"
  918.  
  919.         set RegLastError = 0
  920.         CreateRegKey $(BaseHandle) $(KeyInfo) "" $(MaskAllAccess) "" KeyHandle
  921.         ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  922.         set Status = STATUS_ERROR_CREATEKEY
  923.         ;   Debug-Output "REGISTRY.INF: Error in creating key"
  924.         goto endcreate
  925.         endif
  926.     endif
  927.  
  928.     ifstr(i) $(BaseHandle) != $($0)
  929.         CloseRegKey $(BaseHandle)
  930.         ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  931.         set Status = STATUS_ERROR_CREATEKEY
  932.         ;  Debug-Output "REGISTRY.INF: Error in closing base handle"
  933.         goto endcreate
  934.         endif
  935.     endif
  936.  
  937.     set BaseHandle = $(KeyHandle)
  938.  
  939.     EndForListDo
  940.  
  941.     ifstr(i) $($2) != {}
  942.     shell "" AddValueList $(KeyHandle) $($2)
  943.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  944.         set Status = STATUS_ERROR_CREATEVALUE
  945.         goto endcreate
  946.     endif
  947.     endif
  948.     set Status = STATUS_SUCCESSFUL
  949.  
  950. endcreate = +
  951.     ifstr(i) $(Status) != STATUS_SUCCESSFUL
  952.     ; Debug-Output "REGISTRY.INF: CreateKey Error:"$(Status)
  953.     endif
  954.     Return $(Status) $(KeyHandle)
  955.  
  956.  
  957. ;*************************************************************************
  958. ;
  959. ;     SECTION:   AddValueList
  960. ;
  961. ;     PURPOSE:   Given a nested list of value items, add each to the given
  962. ;                key.   Key is left open.
  963. ;
  964. ;   ARGUMENTS:   $0    Registry key handle
  965. ;                $1    List of value items; for example:
  966. ;                          { {ValueName1,0,$(!REG_VT_SZ),$(ValueData1)}, +
  967. ;                            {ValueName2,0,$(!REG_VT_SZ),$(ValueData2)} }
  968. ;
  969. ;     RETURNS:   $R0   Status
  970. ;
  971. ;
  972. ;*************************************************************************
  973.  
  974. [AddValueList]
  975.    set Status = STATUS_FAILED
  976.    read-syms RegistryConstants
  977.  
  978.    ForListDo $($1)
  979.        SetRegValue $($0) $($)
  980.        ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  981.        ; Debug-Output "REGISTRY.INF: CreateValue failed:"$($)
  982.        goto end_addvaluelist
  983.        endif
  984.    EndForListDo
  985.    set Status = STATUS_SUCCESSFUL
  986.  
  987. end_addvaluelist = +
  988.    return $(Status)
  989.  
  990. ;**************************************************************
  991. ; ROUTINE:      QueryUserQuit
  992. ;
  993. ; DESCRIPTION:  This routine queries whether the user wants to quit setup
  994. ;
  995. ; INPUTS:       None
  996. ;
  997. ; OUTPUTS:      $R0: Status:     STATUS_SUCCESSFUL |
  998. ;                                STATUS_FAILED
  999. ;
  1000. ;               $R1: UserAction: OK | CANCEL
  1001. ;
  1002. ;**************************************************************
  1003. [QueryUserQuit]
  1004.  
  1005.     set Status     = STATUS_FAILED
  1006.     set UserAction = CANCEL
  1007.  
  1008.     ;
  1009.     ; read in quit message
  1010.     ;
  1011.     read-syms ExitWarningDlg$(!STF_LANGUAGE)
  1012.     ui start "ExitWarning"
  1013.     ifstr(i) $(DLGEVENT) == "YES"
  1014.     set Status     = STATUS_SUCCESSFUL
  1015.     set UserAction = "OK"
  1016.  
  1017.     else-ifstr(i) $(DLGEVENT) == "NO"
  1018.     set Status     = STATUS_SUCCESSFUL
  1019.     set UserAction = "CANCEL"
  1020.     else
  1021.     endif
  1022.  
  1023. fin_QueryUserQuit = +
  1024.     Return $(Status) $(UserAction)
  1025.  
  1026. [ExitWarningDlgENG]
  1027.     DlgType      = "MessageBox"
  1028.     STF_MB_TITLE = "Exit "$(!ProductName)" Setup"
  1029.     STF_MB_TEXT  = "The "$(!ProductName)" is not completely installed."$(LF)$(LF)+
  1030.            "  Are you sure you want to exit Setup?"
  1031.     STF_MB_TYPE  = 3
  1032.     STF_MB_ICON  = 5
  1033.     STF_MB_DEF   = 1
  1034.  
  1035.  
  1036. ;**************************************************************
  1037. ; ROUTINE:      SetupMessage
  1038. ;
  1039. ; DESCRIPTION:  Puts up a MessageBox
  1040. ;
  1041. ; INPUTS:       $0   LanguageID
  1042. ;               $1   Message type
  1043. ;               $2   Message string
  1044. ;
  1045. ; OUTPUTS:      $R0: Status:     STATUS_SUCCESSFUL |
  1046. ;                                STATUS_FAILED
  1047. ;
  1048. ;               $R1: UserAction: OK | CANCEL
  1049. ;
  1050. ;**************************************************************
  1051. [SetupMessage]
  1052.     set Status     = STATUS_FAILED
  1053.     set UserAction = "CANCEL"
  1054.     set DlgText = $($2)
  1055.     ifstr(i) $($1) == "WARNING"
  1056.     read-syms WarningDlg$($0)
  1057.     else-ifstr(i) $($1) == "FATAL"
  1058.     read-syms FatalDlg$($0)
  1059.     else-ifstr(i) $($1) == "NONFATAL"
  1060.     read-syms NonfatalDlg$($0)
  1061.     else-ifstr(i) $($1) == "STATUS"
  1062.     read-syms StatusDlg$($0)
  1063.     else-ifstr(i) $($1) == "WARNINGOK"
  1064.     read-syms WarningOKDlg$($0)
  1065.     else
  1066.     goto finish_SetupMessage
  1067.     endif
  1068.     ui start "SetupMessage"
  1069.     ifstr(i) $(DLGEVENT) == "OK"
  1070.     set Status     = STATUS_SUCCESSFUL
  1071.     set UserAction = $(DLGEVENT)
  1072.     else-ifstr(i) $(DLGEVENT) == "CANCEL"
  1073.     set Status     = STATUS_SUCCESSFUL
  1074.     set UserAction = $(DLGEVENT)
  1075.     else-ifstr(i) $(DLGEVENT) == "YES"
  1076.     set Status     = STATUS_SUCCESSFUL
  1077.     set UserAction = $(DLGEVENT)
  1078.     else-ifstr(i) $(DLGEVENT) == "NO"
  1079.     set Status     = STATUS_SUCCESSFUL
  1080.     set UserAction = $(DLGEVENT)
  1081.     else
  1082.     endif
  1083. finish_SetupMessage = +
  1084.     Return $(Status) $(UserAction)
  1085.     end
  1086. [WarningDlgENG]
  1087.     STF_MB_TITLE = "Setup Message"
  1088.     DlgType      = "MessageBox"
  1089.     STF_MB_TEXT  = $(DlgText)
  1090.     STF_MB_TYPE  = 2
  1091.     STF_MB_ICON  = 5
  1092.     STF_MB_DEF   = 2
  1093. [FatalDlgENG]
  1094.     STF_MB_TITLE = "Setup Message"
  1095.     DlgType      = "MessageBox"
  1096.     STF_MB_TEXT  = $(DlgText)
  1097.     STF_MB_TYPE  = 1
  1098.     STF_MB_ICON  = 3
  1099.     STF_MB_DEF   = 1
  1100. [NonfatalDlgENG]
  1101.     STF_MB_TITLE = "Setup Message"
  1102.     DlgType      = "MessageBox"
  1103.     STF_MB_TEXT  = $(DlgText)
  1104.     STF_MB_TYPE  = 1
  1105.     STF_MB_ICON  = 5
  1106.     STF_MB_DEF   = 1
  1107. [StatusDlgENG]
  1108.     STF_MB_TITLE = "Setup Message"
  1109.     DlgType      = "MessageBox"
  1110.     STF_MB_TEXT  = $(DlgText)
  1111.     STF_MB_TYPE  = 1
  1112.     STF_MB_ICON  = 2
  1113.     STF_MB_DEF   = 1
  1114. [WarningOKDlgENG]
  1115.     DlgType      = "MessageBox"
  1116.     STF_MB_TITLE = "Setup Message"
  1117.     STF_MB_TEXT  = $(DlgText)
  1118.     STF_MB_TYPE  = 3
  1119.     STF_MB_ICON  = 5
  1120.     STF_MB_DEF   = 1
  1121.  
  1122.  
  1123.  
  1124. ;**************************************************************
  1125. ; ROUTINE:      DoAskPathEx
  1126. ;
  1127. ; DESCRIPTION:  Puts up an EDIT box to prompt for a path
  1128. ;
  1129. ; INPUTS:       $0   LanguageID
  1130. ;               $1   Message type
  1131. ;               $2   Message string
  1132. ;               $3   Message error
  1133. ;
  1134. ; OUTPUTS:      $R0: Status:     STATUS_SUCCESSFUL |
  1135. ;                                STATUS_FAILED
  1136. ;
  1137. ;               $R1: UserAction: OK | CANCEL
  1138. ;
  1139. ;**************************************************************
  1140. [DoAskPathEx]
  1141.     set Status      = STATUS_FAILED
  1142.     set Src         = $($0)
  1143. askpath = +
  1144.     read-syms DisketteDlg$(!STF_LANGUAGE)
  1145.     ui start "Diskette"
  1146.     ifstr(i) $(DLGEVENT) == "CONTINUE"
  1147.     LibraryProcedure IsFullPath, $(!LIBHANDLE), CheckPathFullPathSpec $(EditTextOut)
  1148.     ifstr(i) $(IsFullPath) == "NO"
  1149.         StartWait
  1150.         LibraryProcedure STATUS, $(!LIBHANDLE), ProcessForUNC $(EditTextOut)
  1151.         EndWait
  1152.         ifstr(i) $(STATUS) == "ERROR"
  1153.         shell "" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $($3)
  1154.         goto askpath
  1155.         else-ifstr(i) $(STATUS) == "NOT-UNC"
  1156.         shell "" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $($3)
  1157.         goto askpath
  1158.         else-ifstr(i) $(STATUS) == "UNC-FAILCONNECT"
  1159.         shell "" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $($3)
  1160.         goto askpath
  1161.         else
  1162.         set Src = $(STATUS)
  1163.         endif
  1164.     else
  1165.         set Src = $(EditTextOut)
  1166.     endif
  1167.     ui pop 1
  1168.     LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(Src)
  1169.     ifstr(i) $(STATUS) == "ERROR"
  1170.         goto finish_DoAskPath
  1171.     else
  1172.         set Src = $(STATUS)
  1173.         set Status = STATUS_SUCCESSFUL
  1174.         goto finish_DoAskPath
  1175.     endif
  1176.     else-ifstr(i) $(DLGEVENT) == "BACK"
  1177.     ui pop 1
  1178.     set Status = STATUS_USERCANCEL
  1179.     goto finish_DoAskPath
  1180.     else
  1181.     ui pop 1
  1182.     goto finish_DoAskPath
  1183.     endif
  1184. finish_DoAskPath = +
  1185.     Return $(Status) $(Src) $(EditTextOut)
  1186.  
  1187. [DisketteDlgENG]
  1188.     Caption        = $(!ProductName)" Setup"
  1189.     Continue       = "Continue"
  1190.     Cancel         = "Cancel"
  1191.     DlgType        = "Edit"
  1192.     DlgTemplate    = "DISKETTE"
  1193.     DlgText        = $($1)
  1194.     Edit1Label     = ""
  1195.     EditTextIn     = $(Src)
  1196.     EditFocus      = "ALL"
  1197.  
  1198.  
  1199. ;**************************************************************
  1200. ; Billboard Helper functions
  1201. ;**************************************************************
  1202. [PushBillboard]
  1203.     read-syms BillboardDlg$(!STF_LANGUAGE)
  1204.     ui start "Billboard"
  1205.     Return
  1206. [PopBillboard]
  1207.     ui pop 1
  1208.     Return
  1209. [BillboardDlgENG]
  1210.     DlgType     = Billboard
  1211.     DlgTemplate = $($0)
  1212.     TextFields  = {$($1)}
  1213.  
  1214.  
  1215. ;---------------------------------------------------------------------------------
  1216. ;                                 Section 3a
  1217. ;
  1218. ; This is where we say which sections are copied and where the sections go
  1219. ;
  1220. ;---------------------------------------------------------------------------------
  1221.  
  1222.  
  1223. [ICopyWebAdminFiles]
  1224.     set STF_VITAL = ""
  1225.     AddSectionFilesToCopyList Files-System  $(!STF_SRCDIR)  $(!STF_WINDOWSSYSPATH)
  1226.     AddSectionFilesToCopyList Files-Main  $(!STF_SRCDIR)  $(!ProductDirW)
  1227.     AddSectionFilesToCopyList Files-script  $(!STF_SRCDIR)  $(!ProductDirS)
  1228.     AddSectionFilesToCopyList Files-ScriptsWebAdmin  $(!STF_SRCDIR)  $(!ProductDirS)"NTAdmin"
  1229.     AddSectionFilesToCopyList Files-WWWRootWebAdmin  $(!STF_SRCDIR)  $(!ProductDirW)"NTAdmin"
  1230.     AddSectionFilesToCopyList Files-WWWRootWebAdminExesM  $(!STF_SRCDIR)  $(!ProductDirW)"NTAdmin\Exes\mips"
  1231.     AddSectionFilesToCopyList Files-WWWRootWebAdminExesI  $(!STF_SRCDIR)  $(!ProductDirW)"NTAdmin\Exes\i386"
  1232.     AddSectionFilesToCopyList Files-WWWRootWebAdminExesA  $(!STF_SRCDIR)  $(!ProductDirW)"NTAdmin\Exes\alpha"
  1233.     AddSectionFilesToCopyList Files-WWWRootWebAdminExesP  $(!STF_SRCDIR)  $(!ProductDirW)"NTAdmin\Exes\ppc"
  1234.     AddSectionFilesToCopyList Files-WWWRootWebAdminGraphics  $(!STF_SRCDIR)  $(!ProductDirW)"NTAdmin\Graphics"
  1235.     exit
  1236.  
  1237. ;---------------------------------------------------------------------------------
  1238. ; end
  1239. ;---------------------------------------------------------------------------------
  1240.  
  1241. [Install-All-Files-Now]
  1242.     CopyFilesInCopyList
  1243.     exit
  1244.  
  1245. ;---------------------------------------------------------------------------------
  1246. ;                                 Section 3b
  1247. ;
  1248. ; This is where we create directories to put stuff
  1249. ;
  1250. ;---------------------------------------------------------------------------------
  1251.  
  1252.  
  1253. [ICreateWebAdminDir]
  1254.     
  1255.     ; This is a do loop which creates the individual sub directories
  1256.     ;
  1257.     ; \Scripts\WebAdmin
  1258.     ;
  1259.     split-string $(!ProductDirS)"NTAdmin" "\" _DirSplit
  1260.     ForListDo $(_DirSplit)
  1261.     set _TmpDir = $(_TmpDir)$($)
  1262.     ifstr(i) $($) != "\"
  1263.         CreateDir $(_TmpDir)
  1264.     endif
  1265.     EndForListDo
  1266.  
  1267.     ; This is a do loop which creates the individual sub directories
  1268.     ;
  1269.     ;\WWWRoot\WebAdmin\Graphics
  1270.     ;
  1271.     split-string $(!ProductDirW)"NTAdmin\Graphics" "\" _DirSplit2
  1272.     ForListDo $(_DirSplit2)
  1273.     set _TmpDir2 = $(_TmpDir2)$($)
  1274.     ifstr(i) $($) != "\"
  1275.         CreateDir $(_TmpDir2)
  1276.     endif
  1277.     EndForListDo
  1278.  
  1279.     ; This is a do loop which creates the individual sub directories
  1280.     ;
  1281.     ;\WWWRoot\WebAdmin\Exes
  1282.     ;
  1283.  
  1284.     CreateDir $(ProductDirW)NTAdmin\Exes
  1285.     CreateDir $(ProductDirW)NTAdmin\Exes\mips
  1286.     CreateDir $(ProductDirW)NTAdmin\Exes\i386
  1287.     CreateDir $(ProductDirW)NTAdmin\Exes\alpha
  1288.     CreateDir $(ProductDirW)NTAdmin\Exes\ppc
  1289.  
  1290.     exit
  1291.  
  1292. ;---------------------------------------------------------------------------------
  1293. ; end
  1294. ;---------------------------------------------------------------------------------
  1295.  
  1296.  
  1297. ;---------------------------------------------------------------------------------
  1298. ;                                 Section 3
  1299. ;
  1300. ; Web Admin file lists...
  1301. ;
  1302. ;---------------------------------------------------------------------------------
  1303.  
  1304.  
  1305. [Files-System]
  1306. 1, Winmsdp.exe, NOLOG
  1307.         
  1308. [Files-Main]
  1309.  
  1310. [Files-Script]
  1311.  
  1312. [Files-ScriptsWebAdmin]
  1313. 1, ntadmin.dll, NOLOG
  1314. 1, account.htt, NOLOG
  1315. 1, asharinf.htt, NOLOG
  1316. 1, asharown.htt, NOLOG
  1317. 1, asharprm.htt, NOLOG
  1318. 1, confgdmp.htt, NOLOG
  1319. 1, confgdsp.htt, NOLOG
  1320. 1, devmgr.htt, NOLOG
  1321. 1, dstartup.htt, NOLOG
  1322. 1, erruser.htt, NOLOG
  1323. 1, EventLog.htt, NOLOG
  1324. 1, EvtClear.htt, NOLOG
  1325. 1, EvtInfo.htt, NOLOG
  1326. 1, EvtList.htt, NOLOG
  1327. 1, filebrws.htt, NOLOG
  1328. 1, fileperm.htt, NOLOG
  1329. 1, fprmaddu.htt, NOLOG
  1330. 1, fprmaddg.htt, NOLOG
  1331. 1, fprmaddo.htt, NOLOG
  1332. 1, fprmdel.htt, NOLOG
  1333. 1, genstat.htt, NOLOG
  1334. 1, grpadd.htt, NOLOG
  1335. 1, grpdel.htt, NOLOG
  1336. 1, grplist.htt, NOLOG
  1337. 1, maintain.htt, NOLOG
  1338. 1, nsharinf.htt, NOLOG
  1339. 1, perfcntr.htt, NOLOG
  1340. 1, perfobjs.htt, NOLOG
  1341. 1, permaddg.htt, NOLOG
  1342. 1, permaddo.htt, NOLOG
  1343. 1, permaddu.htt, NOLOG
  1344. 1, permdel.htt, NOLOG
  1345. 1, qjobmgr.htt, NOLOG
  1346. 1, quemgr.htt, NOLOG
  1347. 1, reboot.htt, NOLOG
  1348. 1, rebootcm.htt, NOLOG
  1349. 1, rebooted.htt, NOLOG
  1350. 1, remote.htt, NOLOG
  1351. 1, sendmsg.htt, NOLOG
  1352. 1, servstat.htt, NOLOG
  1353. 1, sesdisc.htt, NOLOG
  1354. 1, sesdisca.htt, NOLOG
  1355. 1, sesinfo.htt, NOLOG
  1356. 1, sesslist.htt, NOLOG
  1357. 1, sharadd.htt, NOLOG
  1358. 1, sharbrws.htt, NOLOG
  1359. 1, shardel.htt, NOLOG
  1360. 1, sharinfo.htt, NOLOG
  1361. 1, sharing.htt, NOLOG
  1362. 1, sharlist.htt, NOLOG
  1363. 1, sharperm.htt, NOLOG
  1364. 1, sstartup.htt, NOLOG
  1365. 1, stats.htt, NOLOG
  1366. 1, svcmgr.htt, NOLOG
  1367. 1, useradd.htt, NOLOG
  1368. 1, userdel.htt, NOLOG
  1369. 1, usergrps.htt, NOLOG
  1370. 1, userinfo.htt, NOLOG
  1371. 1, userlist.htt, NOLOG
  1372. 1, usernetw.htt, NOLOG
  1373. 1, userpwd.htt, NOLOG
  1374. 1, webpref.htt, NOLOG
  1375. 1, whowrote.htt, NOLOG
  1376. 1, wrkstadd.htt, NOLOG
  1377. 1, Winmsdp.exe, NOLOG
  1378.  
  1379. [Files-WWWRootWebAdmin]
  1380. 1, CpyRight.htm, NOLOG
  1381. 1, Error.htm, NOLOG
  1382. 1, NTAdmin.htm, NOLOG
  1383. 1, NTADMI~1.HTM, NOLOG,RENAME="NtAdminHelp.htm"
  1384. 1, ReadMe.doc, NOLOG
  1385.  
  1386. [Files-WWWRootWebAdminExesM]
  1387. 1, rclientm.exe, NOLOG,RENAME="rclient.exe"
  1388.  
  1389. [Files-WWWRootWebAdminExesI]
  1390. 1, rclienti.exe, NOLOG,RENAME="rclient.exe"
  1391.  
  1392. [Files-WWWRootWebAdminExesA]
  1393. 1, rclienta.exe, NOLOG,RENAME="rclient.exe"
  1394.  
  1395. [Files-WWWRootWebAdminExesP]
  1396. 1, rclientp.exe, NOLOG,RENAME="rclient.exe"
  1397.  
  1398. [Files-WWWRootWebAdminGraphics]
  1399. 1, ARROWA~1.GIF, NOLOG,RENAME="ArrowAccounts.GIF"
  1400. 1, ARROWD~1.GIF, NOLOG,RENAME="ArrowDevices.gif"
  1401. 1, ARROWE~1.GIF, NOLOG,RENAME="ArrowEvents.GIF"
  1402. 1, ARROWM~1.GIF, NOLOG,RENAME="ArrowMaintenance.gif"
  1403. 1, ARROWP~1.GIF, NOLOG,RENAME="ArrowPrinters.GIF"
  1404. 1, ARROWS~1.GIF, NOLOG,RENAME="ArrowServices.gif"
  1405. 1, ARROWS~2.GIF, NOLOG,RENAME="ArrowSessions.GIF"
  1406. 1, ARROWS~3.GIF, NOLOG,RENAME="ArrowShares.GIF"
  1407. 1, ARROWS~4.GIF, NOLOG,RENAME="ArrowStatus.GIF"
  1408. 1, Bologo.gif, NOLOG
  1409. 1, CORDSL~1.GIF, NOLOG,RENAME="CordsLarge.gif"
  1410. 1, CORDSS~1.GIF, NOLOG,RENAME="CordsSmall.gif"
  1411. 1, EVENTA~1.GIF, NOLOG,RENAME="EventAuditFailure.GIF"
  1412. 1, EVENTA~2.GIF, NOLOG,RENAME="EventAuditSuccess.GIF"
  1413. 1, EVENTE~1.GIF, NOLOG,RENAME="EventError.GIF"
  1414. 1, EVENTI~1.GIF, NOLOG,RENAME="EventInformation.GIF"
  1415. 1, EVENTW~1.GIF, NOLOG,RENAME="EventWarning.GIF"
  1416. 1, ie_anim.gif, NOLOG
  1417. 1, ielogo.gif, NOLOG
  1418. 1, ImgIIS.gif, NOLOG
  1419. 1, INTRO.HTM, NOLOG
  1420. 1, INTROI~1.JPG, NOLOG, RENAME="IntroImage.jpg"
  1421. 1, MINIAR~1.GIF, NOLOG, RENAME="miniarrow.gif"
  1422. 1, Mshplogo.gif, NOLOG
  1423. 1, STATUS~1.GIF, NOLOG, RENAME="StatusBackground.gif"
  1424. 1, STATUS~2.GIF, NOLOG, RENAME="StatusCords.gif"
  1425. 1, STATUS~3.GIF, NOLOG, RENAME="StatusHighBig.gif"
  1426. 1, STATUS~4.GIF, NOLOG, RENAME="StatusHighSmall.gif"
  1427. 1, ST3DB5~5.GIF, NOLOG, RENAME="StatusLowBig.gif"
  1428. 1, ST1D95~5.GIF, NOLOG, RENAME="StatusLowSmall.gif"
  1429. 1, ST3899~5.GIF, NOLOG, RENAME="StatusMedBig.gif"
  1430. 1, ST9A81~5.GIF, NOLOG, RENAME="StatusMedSmall.gif"
  1431. 1, ST5049~5.GIF, NOLOG, RENAME="StatusTitle.gif"
  1432. 1, WATERM~1.GIF, NOLOG,RENAME="watermark.gif"
  1433. 1, WEBADM~1.GIF, NOLOG,RENAME="WebAdminLarge.gif"
  1434. 1, WEBADM~2.GIF, NOLOG,RENAME="WebAdminSmall.gif"
  1435.  
  1436. ;---------------------------------------------------------------------------------
  1437. ; end
  1438. ;---------------------------------------------------------------------------------
  1439.  
  1440.  
  1441. ;---------------------------------------------------------------------------------
  1442. ;                                 Section 4
  1443. ; Web Admin registry keys
  1444. ;
  1445. ; Information 
  1446. ; -----------
  1447. ; 0 - Text
  1448. ; 3 - Binary
  1449. ; 4 - DWORD
  1450. ;
  1451. ;---------------------------------------------------------------------------------
  1452.  
  1453.  
  1454. [WebAdmin.Add.Reg]
  1455. HKLM,$(!ProductKey),"MajorVersion",4,1
  1456. HKLM,$(!ProductKey),"MajorMinor",4,0
  1457. HKLM,$(!ProductKey),"SSLRequired",4,0
  1458. HKLM,$(!ProductKey),"MaxUsersToDisplay",4,1000
  1459. HKLM,$(!ProductKey)\Limit,"NumUsersLow",4,5
  1460. HKLM,$(!ProductKey)\Limit,"NumUsersHigh",4,25
  1461. HKLM,$(!ProductKey)\Limit,"CPULow",4,50
  1462. HKLM,$(!ProductKey)\Limit,"CPUHigh",4,95
  1463. HKLM,$(!ProductKey)\Limit,"NetwrkLow",4,50
  1464. HKLM,$(!ProductKey)\Limit,"NetwrkHigh",4,90
  1465. HKLM,$(!ProductKey)\Limit,"DiskLow",4,50
  1466. HKLM,$(!ProductKey)\Limit,"DiskHigh",4,90
  1467. HKLM,$(!ProductKey)\Limit,"MemoryLow",4,60
  1468. HKLM,$(!ProductKey)\Limit,"MemoryHigh",4,90
  1469.  
  1470. ;---------------------------------------------------------------------------------
  1471. ; end
  1472. ;---------------------------------------------------------------------------------
  1473.