| | | Forum Guru
       
Group: Forum Members Last Login: 9/8/2008 5:20:14 PM Posts: 51, Visits: 183 |
| I've seen a lot of people talk about this, but no one has published anything that I could find about how to install Point on a TS server. Most people are trying to charge for it. Well, here is what I do to setup Point. There may be a few steps missing, but in general this is how I've setup Point on TS 2000 and 2003. It's worked with almost all versions(had a couple issues with 4.3, but that was probably my fault because I tried to skip a step or two).
None of the scripts are commented or even written that well, but it works. I've had this process running for 10-300 users w/o any real issues. If you have a TS farm it's pretty easy to modify to work with that too.
Here’s how out setup works:
1.Login to TS as Admin equivalent user. 2.At command prompt: change user /install 3.Install Point 5.1 standard install 4.At command prompt: change user /execute (I think this is the right command to get back to execute mode) 5.Copy Winpoint directory to c:\documents and settings\default user\winpoint directory 6.Copy Winpoint directory to d:\zwinpoint (probably not the best name or place to keep this, but makes life easier). I keep it on D: because we hide the C drive from the users. 7.Login as a non-admin user 8.Scripts that we run to get point setup per user and make sure that they have the most current version: 9.Main Login ********************************* snip IF '%COMPUTERNAME%' == 'TSSRV' goto :TSSRV :TSSRV subst w: "%userprofile%\winpoint" :END snip ********************************* 10.PntVersionChk.vbs – First thing I do is check to see if the user has the current version of Point in their User Profile. If not, I copy in the new version of Point, based on the zWinpoint directory. We’ve had issues copying out of the C:\winpoint directory while other users are using Point on the same server, so that’s the reason I created d:\zWinPoint ********************************* Dim filesys, WshShell, NewPoint, CrntPoint, NewPntDate, CrntPntDate Set filesys = CreateObject("Scripting.FileSystemObject") Set WshShell = WScript.CreateObject("WScript.Shell") Set NewPoint = filesys.GetFile("d:\zwinpoint\winpoint.exe") Set CrntPoint = filesys.Getfile("w:\winpoint.exe") NewPntDate = NewPoint.Datelastmodified CrntPntDate = CrntPoint.Datelastmodified If NewPntDate > crntpntdate Then msgbox "An outdated version of WinPoint has been found!" & vbLf & "Please be patient while we update Point" & vbLf &" - Your friendly Mortgage IT Staff" & vbLf & "Click OK To update" WshShell.Run ("%ComSpec% /c " & "xcopy d:\zwinpoint\*.* w:\*.* /e/s/Y/R") Else End If ********************************* 11.WinPntINI.vbs – This file basically grabs some environment variables and pumps then into the INI file with a snippet I found on the internet. Allows me to update folders, standardize screen colors, etc. It also looks around for the winpoint.ini. It’s not slick, but it works. '****************************************************************** 'Script Name: WinPntINI.vbs 'Author: Larry 'Created: 9/04/03 '******************************************************************
'Script Intro: Perform script initialization activities ' Do Not Place an "Option Explicit" due to subroutines on error resume next 'Script Body:
Dim WshNet, userName, tsSrvName, scrptVer, FSO, wshshl, winPntini(4), objEnv Set WshShl = WScript.Createobject("WScript.Shell") Set WshNet = WScript.CreateObject("WScript.Network") Set FSO = Wscript.CreateObject("Scripting.FileSystemObject")
scrptVer = "3.08.2005" userName = WshNet.userName tsSrvName = WshNet.ComputerName profiledir = wshshl.ExpandEnvironmentStrings("%USERProfile%") windowsdir = wshshl.ExpandEnvironmentStrings("%windir%") winPntini(0) = "h:\windows\winpoint.ini" winPntini(1) = windowsdir & "\winpoint.ini" winpntini(2) = "c:\windows\winpoint.ini" winpntini(3) = "c:\winnt\winpoint.ini"
'Script Body: For Each x In winPntini If (fso.fileexists(x)) Then writeinistring "settings", "AutoSave", "1", x writeinistring "User Information", "User", userName & " " & tsSrvName & " v" & scrptVer, x writeinistring "Directories", "Templates", "p:\PNTTEMPL", x writeinistring "Directories", "Folder0", "p:\ACTIVE", x writeinistring "Directories", "Folder1", "p:\Closed", x writeinistring "Directories", "Folder4", "p:\Prospects", x writeinistring "Directories", "Folder5", "SENTINEL", x writeinistring "Screen Colors", "Title", "0,0,128", x writeinistring "Screen Colors", "Label", "0,0,0", x writeinistring "Screen Colors", "SelectedFld/Btn/Box", "0,255,255", x writeinistring "Screen Colors", "SelectedFldData", "0,0,0", x writeinistring "Screen Colors", "CalculatedFldData", "128,0,0", x writeinistring "Shortcut Button Info", "SmartList", "0", x
End If Next If tsSrvName = "TSSRV" Then writeinistring "Directories", "Application", profiledir + "\winpoint", "h:\windows\winpoint.ini" writeinistring "Directories", "User", profiledir + "\winpoint\user", "h:\windows\winpoint.ini" End If
'Work with INI files In VBS (ASP/WSH) 'v1.00 '2003 Antonin Foller, PSTRUH Software, http://www.motobit.com 'Function GetINIString(Section, KeyName, Default, FileName) 'Sub WriteINIString(Section, KeyName, Value, FileName)
Sub WriteINIString(Section, KeyName, Value, FileName) Dim INIContents, PosSection, PosEndSection 'Get contents of the INI file As a string INIContents = GetFile(FileName)
'Find section PosSection = InStr(1, INIContents, "[" & Section & "]", vbTextCompare) If PosSection>0 Then 'Section exists. Find end of section PosEndSection = InStr(PosSection, INIContents, vbCrLf & "[") '?Is this last section? If PosEndSection = 0 Then PosEndSection = Len(INIContents)+1 'Separate section contents Dim OldsContents, NewsContents, Line Dim sKeyName, Found OldsContents = Mid(INIContents, PosSection, PosEndSection - PosSection) OldsContents = split(OldsContents, vbCrLf)
'Temp variable To find a Key sKeyName = LCase(KeyName & "=")
'Enumerate section lines For Each Line In OldsContents If LCase(Left(Line, Len(sKeyName))) = sKeyName Then Line = KeyName & "=" & Value Found = True End If NewsContents = NewsContents & Line & vbCrLf Next
If isempty(Found) Then 'key Not found - add it at the end of section NewsContents = NewsContents & KeyName & "=" & Value Else 'remove last vbCrLf - the vbCrLf is at PosEndSection NewsContents = Left(NewsContents, Len(NewsContents) - 2) End If
'Combine pre-section, new section And post-section data. INIContents = Left(INIContents, PosSection-1) & _ NewsContents & Mid(INIContents, PosEndSection) else'if PosSection>0 Then 'Section Not found. Add section data at the end of file contents. If Right(INIContents, 2) <> vbCrLf And Len(INIContents)>0 Then INIContents = INIContents & vbCrLf End If INIContents = INIContents & "[" & Section & "]" & vbCrLf & _ KeyName & "=" & Value end if'if PosSection>0 Then WriteFile FileName, INIContents End Sub
Function GetINIString(Section, KeyName, Default, FileName) Dim INIContents, PosSection, PosEndSection, sContents, Value, Found 'Get contents of the INI file As a string INIContents = GetFile(FileName)
'Find section PosSection = InStr(1, INIContents, "[" & Section & "]", vbTextCompare) If PosSection>0 Then 'Section exists. Find end of section PosEndSection = InStr(PosSection, INIContents, vbCrLf & "[") '?Is this last section? If PosEndSection = 0 Then PosEndSection = Len(INIContents)+1 'Separate section contents sContents = Mid(INIContents, PosSection, PosEndSection - PosSection)
If InStr(1, sContents, vbCrLf & KeyName & "=", vbTextCompare)>0 Then Found = True 'Separate value of a key. Value = SeparateField(sContents, vbCrLf & KeyName & "=", vbCrLf) End If End If If isempty(Found) Then Value = Default GetINIString = Value End Function
'Separates one field between sStart And sEnd Function SeparateField(ByVal sFrom, ByVal sStart, ByVal sEnd) Dim PosB: PosB = InStr(1, sFrom, sStart, 1) If PosB > 0 Then PosB = PosB + Len(sStart) Dim PosE: PosE = InStr(PosB, sFrom, sEnd, 1) If PosE = 0 Then PosE = InStr(PosB, sFrom, vbCrLf, 1) If PosE = 0 Then PosE = Len(sFrom) + 1 SeparateField = Mid(sFrom, PosB, PosE - PosB) End If End Function
'File functions Function GetFile(ByVal FileName) Dim FS: Set FS = CreateObject("Scripting.FileSystemObject") 'Go To windows folder If full path Not specified. If InStr(FileName, ":\") = 0 And Left (FileName,2)<>"\\" Then FileName = FS.GetSpecialFolder(0) & "\" & FileName End If On Error Resume Next
GetFile = FS.OpenTextFile(FileName).ReadAll End Function
Function WriteFile(ByVal FileName, ByVal Contents) Dim FS: Set FS = CreateObject("Scripting.FileSystemObject") 'On Error Resume Next
'Go To windows folder If full path Not specified. If InStr(FileName, ":\") = 0 And Left (FileName,2)<>"\\" Then FileName = FS.GetSpecialFolder(0) & "\" & FileName End If
Dim OutStream: Set OutStream = FS.OpenTextFile(FileName, 2, True) OutStream.Write Contents End Function *********************************
Occasionally a new user has to login twice to get the scripts to run correctly (It happens once every 3 or 4 months). I haven’t really tracked it down. The beauty of this setup is that I’ve never had a problem upgrading. I just start the whole process over. Login as Admin, change user /install, install point upgrade, copy c:\winpoint to d:\zwinpoint. When a user logs in, it automatically updates them and they are off and running. The only downside to upgrading is that the user looses a couple of setting (print groups) in point. Would be pretty easy to copy them out and back in after the upgrade, but I haven't found it to be a big problem.
I’ve used these scripts in my environment for awhile without any issues. Your mileage may vary.
Hope this is helpful. |
| | | | 
Sepal

Group: Moderators Last Login: Today @ 3:54:08 PM Posts: 1,178, Visits: 9,173 |
| Thanks for posting this. There were a couple other posts on the old board with step by step instructions. But it looks like ezboard has lost that data. I think many users will find this helpful.
Disclaimer: This post carries no explicit or implied warranty. Nor is there any guarantee that the information contained in this post is accurate. It is offered in the hopes of helping others, but you use it at your own risk. The author will not be liable for any damages that occur as a result of using this post. |
| | | | 
Grand Poo-Bah
       
Group: Administrators Last Login: 11/4/2008 8:29:36 AM Posts: 255, Visits: 13,331 |
| Thanks isupport, I pinned this topic so it's easily available for future users.
Disclaimer: this post carries no explicit or implied warranty. Nor is there any guarantee that the information contained in this post is accurate. It is offered in the hopes of helping others, but you use it at your own risk. The author will not be liable for any damages that occur as a result of using this post. |
| | | | Forum Newbie
       
Group: Forum Members Last Login: 2/7/2006 7:56:57 AM Posts: 8, Visits: 9 |
| | That seems like a great solution. It also seems like an awefully long way to go to do something fairly simple. Here is what I did. I have my users My Documents folder redirected to my AD Server to make it easy for me to back up their documents. This is key to having what I do work. In each user's My Documents folder will exist by default a WINDOWS directory. You can install Point like usual and set up data folders like usual. Then simply copy the winpoint.ini file into the users \my documents\windows folder Works like a charm for me. The tricky part is when you update Point the winpoint.ini file that each user has will be different and will want to upgrade Point for each user. This is a simple fix too. Update Point like usual and copy the new Winpoint.ini file over all the existing winpoint.ini files. A lot less disk space is used. Less to manage. Less to worry about. Less tech skill envolved. Lets face it most of the people using Point have ZERO technology skills. |
| | | | Forum Newbie
       
Group: Forum Members Last Login: 2/7/2006 7:56:57 AM Posts: 8, Visits: 9 |
| | Looking at that script that creates the winpoint.ini file is sweet. I have about 10 Data Folders that various users need various access too. Being able to create teh winpoint.ini file on the fly based on AD Group membership will be a big help. Nice find. |
| | | | Forum Guru
       
Group: Forum Members Last Login: 9/8/2008 5:20:14 PM Posts: 51, Visits: 183 |
| You are absolutely right, for a small environment this will work fine. We used that method for a long time until we had 20 users on the Terminal Server. We found the following problems with just having a single winpoint\work directory:
* Occaisonally (several times a week) when people print, their printouts "step" on each other and you'll end up with a document that starts with one borrowers info and ends with another.
* When pulling credit, you only have one set of credentials that can be saved. So if someone saves their credentials, everyone will be using them over and over. I finally emptied the credentials and made the ini file where this info was saved read-only. Having seperate winpoint/work directories solves this.
* The ini file updates via VB are so that we don't have to worry about copying the winpoint.ini over and over again. I can make changes to people's ini file and not erase their recently used list and such. I could also change their ini file based on their grop membership, etc.
We looked at the disk requirements and it's just not that big of a deal now a days. Our TS server has ~250gb of RAID5 storage, so 50mb for Point per user to avoid the above types of problems is worth it. My concern now is how to integrate PDS into the mix...
I do agree with the fact that most installations of Point that I have run across have been installed by non-technical people, or consultants who don't specialize in the little quirks of an application and are more concerned with getting it running initially rather than dealing with all the issues later on (which is how I started).
Until Calyx really supports TS installations, which they never will (PDS is their remote solution), I haven't found many holes in the above installation method. Diskspace is cheap, I don't like wasting it, but it's not like I backup that folder in each users profile. |
| | | | Forum Member
       
Group: Forum Members Last Login: 1/13/2006 7:26:21 AM Posts: 29, Visits: 59 |
| Hello, in your discussion you reference having separate work directories. I need to configure each user with their work directory but how do I have them to point to that path? I don't see that configuration in the script.
Best Regards,
Sonya |
| | | | 
Supreme Being

Group: Moderators Last Login: 11/15/2008 10:00:24 PM Posts: 835, Visits: 1,899 |
| See isupport's comments from 9/12/05. You need to configure it such that each user has their own winpoint directory. The winpoint.ini contains an Application= line. You would point this path to the user's own winpoint folder, for example: h:\home\user_name\winpoint. It might sound like a lot of disk space to have a separate winpoint for each user, but it's really not. A winpoint folder is about 50mb. Even if you 100 users, you're still using only 5GB which is still relatively inexpensive. If isupport's script is used, I believe it will seamlessly deploy Point updates to each user's winpoint folder when you need to install a new version.
Bryan
Point Product Manager |
| | | |
|