Further research resulted in a better solution than I reported before.
Launch the installer from a command prompt, using syntax like: KG411Setup.exe -r: c:\temp\silent.ini
This will launch the installation wizard. Click through it, selecting the options you normally would. On the last page, uncheck the boxes for display PDF and read me documentation.
You should now find a silent.ini file in C:\temp (or any other path you specified in the above command line).
To run the install silently, use: KG411Setup.exe -p: c:\temp\silent.ini
At the end of the install, it will still open an Explorer window on the Start Menu shortcuts for KaleidaGraph. I could not find a way around that... but this should help a lot on silent installation.
If the version 4.1 installer is called with the "/s" switch, it will install silently. Unfortunately, it will also pop up a Windows Explorer window on the shortcuts in the Start Menu, open a PDF file, and open a readme file.
I got rid of the opening of the PDF file and readme file by adding code to my deployment script which killed any "rundll32.exe" process object which had a CommandLine property containing "KaleidaGraph" in it. I couldn't get rid of the opening of the shortcut menu. I'll post the script code in the Script section in case you find it of value.
For uninstall, you call "C:\windows\unvise32.exe" with the "/s" switch and the path to the "uninstal.log" file inside the KaleidaGraph install directory. For example:
C:\Windows\unvise32.exe /s C:\Program Files (x86)\KaleidaGraph 4.1\uninstal.log
(They don't seem to want quotes around the path, BTW.)
Here is the script I used to kill the PDF and readme opening prompts after silent installation of KaleidaGraph. (It's taken from my standard deployment script and may reference objects which aren't created here, so some tinkering may be necessary.)
Dim dllProcs, thisProc
For i = 0 To 60
WScript.Sleep 1000
dllProcs = GetMatchingProcessObjs("rundll32.exe")
If IsNull(dllProcs) Then
Exit For
End if
For Each thisProc In dllProcs
If InStr(1,thisProc.CommandLine,"KaleidaGraph")>0 Then
thisProc.terminate
End If
next
next
Public Function GetMatchingProcessObjs(processName)
Dim objWMIService, procsFound, matchingProcs(), thisProc
ReDim matchingProcs(0)
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Set procsFound = objWMIService.ExecQuery( _
"SELECT * FROM Win32_Process WHERE Name='" & processName & "'",,48)
' Restructure the collection as an array, to make it easier to
' specify a process by index.
For Each thisProc In procsFound
If IsNull(matchingProcs(0)) Or IsEmpty(matchingProcs(0)) Then
Set matchingProcs(0) = thisProc
Else
ReDim Preserve matchingProcs(UBound(matchingProcs)+1)
Set matchingProcs(UBound(matchingProcs)) = thisProc
End if
Next
If isnull(matchingProcs) Or IsEmpty(matchingProcs) Then
GetMatchingProcessObjs = Null
Else
GetMatchingProcessObjs = matchingProcs
End If
End Function
This application doesn't run smoothly on Windows 7 64-bit. This is because it writes to a KGOleSrv.INI file in the Windows directory and to various settings files inside the Program Files directory. The application also wants to write to protected areas of the registry at each launch.
To resolve those issues, I installed to a different location (e.g., C:\Products) and made that writable to non-administrator users. Then, I included the INI File from the Windows directory in my deployment script. This was copied to the Windows directory and permissions granted so that users could write to it.
The final issue, the registry problem, required creating a Compatibility Shim that runs the application in Windows XP SP2 compatibility mode.
Serialization information for this software gets stored in HKLM\Software\Synergy in a key with a random-looking name and value, and in the files KG41License and KGraph.rsr inside the installation directory. If you register the product and capture that information, you can deploy the product in a registered form by applying those items after installing KaleidaGraph.
View inventory records anonymously contributed by opt-in users of the K1000 Systems Management Appliance.