How install TM1 perspective and TM1 architect on Citrix server?

Product:
IBM Cognos TM1 10.2.2
Microsoft Excel 2010
Windows server 2008 R2 Standard

Problem:
How install TM1 perspective and TM1 architect on Citrix server?

Possible solution:
Copy the setup media to an install folder on the Citrix server.
If you use 32 Bit Excel, then you should install 32 Bit Cognos TM1 Client programs.
Log on to the Citrix server as a local administrator.
Ensure that the prerequisite is installed, that is

  • Microsoft .NET Framework is needed for the Advanced Rules Editor and the publish to the Web feature in Cognos TM1 Architect and TM1 Perspectives.
  • Microsoft Visual C++ 2010 Redistributable Package (x86 and x64)

Both the x86 and x64 versions are required on a 64-bit Windows system if you plan to run any of the TM1 32-bit client applications such as Cognos TM1 Architect and TM1 Perspectives.

Turn off the UAC to make the installation easier.

Download the latest Cognos TM1 client fix pack
And place the media on the citrix c:\install folder.

Start a CMD prompt by right click and select “run as administrator”
Inside the CMD prompt change to the install folder
Then enter command “CHANGE USER /INSTALL”
Enter cd command to go to the win32 folder where you can in the CMD run the ISSETUP.EXE command.
Step through the installation selecting all the defaults.
This will only install TM1 Architect and TM1 Perspective.

After finish, change to the FIX PACK folder and run the ISSETUP.EXE for the TM1 fix pack to the same folder.
When this is done, you can start TM1 architect from the start menu and ensure that it works.
Close the TM1 architect program.

In the CMD prompt enter the command “CHANGE USER /EXECUTE”.
Now is the program installed.

You need to publish the following files in the Citrix portal for the users.

Publish TM1 architect as:
“C:\Program Files (x86)\IBM\cognos\tm1\bin\tm1a.exe”

Publish TM1 perspective as:
“C:\Program Files (x86)\IBM\cognos\tm1\bin\tm1p.xla”

Please note that each user must the first time they start Excel go into Options – Security center -Trusted folders and add the TM1 bin folder.

They must also inside TM1 Architect under menu Options enter the name of the Windows server where TM1 are, that they should connect to.

Then to get it to work better, you can do adjustments like this:

Due to a security issue in Excel 2007 and Excel 2010 you get an error about smart card when you start perspective.
Instead of publish the XLA file direct, create a BAT file with below content:

ECHO OFF

REM change trusted locations in excel

reg add “HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\Trusted Locations\Location6” /v Path /t REG_SZ /f /d “C:\Program Files (x86)\IBM\cognos\tm1\bin\

reg add “HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\Trusted Locations\Location6” /v AllowSubfolders /t REG_DWORD /d 1 /f

reg add “HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\Trusted Locations\Location6” /v Description /t REG_SZ /d  “For TM1” /f

reg add “HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\Trusted Locations\Location6” /v Date /t REG_SZ /d “2016-08-24 10:45” /f

REM start tm1 perspective and excel

“C:\Program Files (x86)\IBM\cognos\tm1\bin\tm1p.xla”

 

Save that file as EXCELFOLDER.BAT
Then publish to start the EXCELFOLDER.BAT instead in citrix.
This will set the TM1 folder to be trusted inside Excel for that user during startup, so TM1 perspective will work.
You need to change the value 14.0 if you do not use Excel version 2010.

The REG ADD in the BAT/CMD file will update a value in the registry for that user who run the script, that is the HKEY_CURRENT_USER, therefor the script need to run after the person have logged in to the Citrix session.

 

Other issue is to prepopulate the TM1P.INI file with data about the server
If the file does not exist it will be created from a master in the folder,

C:\programdata\applix\tm1

Update this tm1p.ini file with the following lines

AdvancedRulesEditor = T
CognosGatewayURI = http://ServerName.Domain.Se/ibmcognos/cgi-bin/cognosisapi.dll
AdminHost = ServerName.Domain.Se
IntegratedLogin = T

 

Otherwise a VBscript like this will update the TM1p.ini file

‘ Script to update the ini file

Const OpenAsDefault = -2  ‘ Opens the file using the system default
Const OpenAsUnicode = -1  ‘ Opens the file as Unicode
Const OpenAs__ASCII =  0  ‘ Opens the file as ASCII
Const ForReading = 1
Const ForWriting = 2
Const ForAppending=8

set objShell = CreateObject(“WScript.Shell”)
profile_path = objShell.ExpandEnvironmentStrings(“%APPDATA%”)
profile_app = profile_path & “\Applix\TM1\tm1p.ini”
‘ profile_app = “C:\Users\cognos\AppData\Roaming\Applix\TM1\tm1p.ini”
‘ msgbox  profile_app

Set objFSO = CreateObject(“Scripting.FileSystemObject”)
Set objTextFile = objFSO.OpenTextFile( profile_app , ForReading, false , OpenAsUnicode)

Do Until objTextFile.AtEndOfStream
strNextLine = objTextFile.Readline
intLineFinder = InStr(strNextLine, “AdvancedRulesEditor”)
If intLineFinder <> 0 Then
strNextLine = “AdvancedRulesEditor = T”
End If

intLineFinder = InStr(strNextLine, “AdminHost =”)
If intLineFinder <> 0 Then
strNextLine = “AdminHost = ServerName.Domain.Se”
End If

intLineFinder = InStr(strNextLine, “IntegratedLogin”)
If intLineFinder <> 0 Then
strNextLine = “IntegratedLogin = T”
End If

intLineFinder = InStr(strNextLine, “CognosGatewayURI”)
If intLineFinder <> 0 Then
strNextLine = “CognosGatewayURI = http://ServerName.Domain.Se/ibmcognos/cgi-bin/cognosisapi.dll”
End If

If objTextFile.AtEndOfStream <> True Then
strNewFile = strNewFile & strNextLine & vbNewLine
End If

Loop

objTextFile.Close
Set objTextFile = objFSO.OpenTextFile( profile_app , ForWriting, true, OpenAsUnicode)
objTextFile.Write strNewFile
objTextFile.Close

Save above script as a file c:\IBM\updateini.vbs

The create a new text file named c:\IBM\updateini.bat that contain this value:

wscript “c:\IBM\updateini.vbs”

This BAT file is then called from loginscript or from published Citrix icon for the TM1 architect.

Note that this line gets the path to the user current running the script, so here it will update that user profile
set objShell = CreateObject(“WScript.Shell”)
profile_path = objShell.ExpandEnvironmentStrings(“%APPDATA%”)

If you set below value wrong the result of the TM1P.INI file may be in Chines language
Set objTextFile = objFSO.OpenTextFile( profile_app , ForReading, false , OpenAsUnicode)

Below rows check if the line read at the moment contain the text IntegratedLogin and if it does then it will replace the whole line with the value IntegratedLogin = T.
intLineFinder = InStr(strNextLine, “IntegratedLogin”)
If intLineFinder <> 0 Then
strNextLine = “IntegratedLogin = T”
End If

 

More information can be found here

https://blogs.technet.microsoft.com/heyscriptingguy/2004/11/30/can-i-edit-ini-files-using-a-script/

http://www.motobit.com/tips/detpg_asp-vbs-read-write-ini-files/

http://www.vbforums.com/showthread.php?168248-How-do-I-Update-an-INI-file-using-a-vbs-file

http://superuser.com/questions/761008/add-registry-key-entries-using-batch-file

https://support.microsoft.com/en-us/kb/2598139

http://www.tek-tips.com/viewthread.cfm?qid=856235

http://stackoverflow.com/questions/30329877/editing-ini-file-writes-garbage-chinese-characters-to-the-output-file

 

If the VBS script does not finish all the way, maybe the timeout have changed on the computer.

To change how long a VBS script can run, you can change it in registry at this point

[HKEY_CURRENT_USER\Software\Microsoft\Windows Script Host\Settings]
“Timeout”=dword:0000000f
“DisplayLogo”=dword:00000001
When you deleted “Timeout”, which had a value of 0x0000000f (15),
you can get the script back to run for a long time.

If the resulting file contains chines characters instead of the one you want then you have set the format in the opentextfile to a format you are not using in your windows computer.

See below for the possibles;

OpenTextFile Method

Opens a specified file and returns a TextStream object that can be used to read from, write to, or append to the file.

Syntax

object.OpenTextFile(filename[, iomode[, create[, format]]])

Arguments

object

Required. Object is always the name of a FileSystemObject.

filename

Required. String expression that identifies the file to open.

iomode

Optional. Can be one of three constants: ForReading, ForWriting, or ForAppending.

create

Optional. Boolean value that indicates whether a new file can be created if the specified filename doesn’t exist. The value is True if a new file is created, False if it isn’t created. If omitted, a new file isn’t created.

format

Optional. One of three Tristate values used to indicate the format of the opened file (TristateTrue = -1 to open the file as Unicode, TristateFalse = 0 to open the file as ASCII, TristateUseDefault = -2 to open the file as the system default). If omitted, the file is opened as ASCII.