Unattended Upgrade from Logitech SetPoint 4.80 to 6.10
Hello all,
For uniformity, we use Logitech MX Revolution mice at every desks in the company. We currently use the Logitech SetPoint software version 4.80 under 64-bit Windows Vista.
http://logitech-louk.navisite.net/web/ftp/pub/techsupport/mouse/setpoint480_x64.exe
When we started using SetPoint, I was able to deploy version 4.80 to all computers in an unattended manner. I downloaded the "[font="courier new"]setpoint480_x64.exe" installer and extracted the "[font="courier new"]1-SetPoint" subfolder (using any archive manager, such as 7-Zip). Inside that folder, I ran the command "[font="courier new"]setup.exe /s" to install silently.
This worked great, using a combination of Microsoft Deployment Toolkit (MDT) for new bare metal workstations and Microsoft System Center Essentials (SCE, which uses WSUS to serve custom packages in addition to regular Microsoft updates) to deploy to workstations already in use. This was easy because #1 I found the silent switch easily ("[font="courier new"]setup.exe /s", this was an InstallShield package) and #2 no older version of the software was ever present on the workstations.
Now, we want to upgrade to SetPoint 6.10, which is the only version currently downloadable from Logitech's website. My first approach is to try the same as with version 4.80. I downloaded the "[font="courier new"]setpoint610_x64.exe" installer and extracted the "[font="courier new"]5-SetPoint" subfolder. Inside that folder, I run the command "[font="courier new"]setup.exe /s". This does not work at all.
http://www.logitech.com/en-us/428/130?softwareid=671&osid=13§ion=downloads
http://logitech-louk.navisite.net/web/ftp/pub/techsupport/mouse/setpoint610_x64.exe
So I have fallen back to the original installer with "[font="courier new"]setpoint610_x64.exe /s". This seems to work: version 6.10 gets installed. However, version 4.80 does not get uninstalled and there seems to be a mix up between both versions, with 4.80 staying in the system tray.
I have been examining the "[font="courier new"]compcfg.ini" files, trying to make sense out of them. I found keys such as "[font="courier new"]LaunchParameters" and "[font="courier new"]LaunchSilentParameters" that looked promising, but I could not get anything out of them, especially without any official reference from Logitech.
I contacted Logitech support on this matter. The installer will not remove an older version; their only advice is to manually remove the older version before installing the newer. So, I started looking for a way to uninstall version 4.80 silently before installing version 6.10, and chaining those two steps in a script. It seems that adding "[font="courier new"]-s" to the registered uninstall string "[font="courier new"]C:\Program Files (x86)\InstallShield Installation Information\{F29B21BD-CAA6-445F-8EF7-A7E2B9D8B14E}\setup.exe" -runfromtemp -l0x0009 -removeonly" can work.
However, chaining does not work. When run silently, the uninstaller for version 4.80 starts and returns immediately, which means that the installer for version 6.10 also starts and runs in parallel, and I end up with the same mix up as above. I tried to find ways to wait for the uninstallation process to finish, but no luck. Logitech support, contacted again on this matter, simply told me they do not support scripts...
Any idea or suggestion is welcome, as I am running out of practical ideas and have spent way too much time on this already. My last idea was to change my script to make it artificially wait for the uninstallation/installation processes to finish before moving on. Some kind of loop with a short timer and monitoring a directory or registry key to disappear (uninstallation) or appear (installation), which would mean the process is done. I do not think I will take the time to implement this, however.
Alex
For uniformity, we use Logitech MX Revolution mice at every desks in the company. We currently use the Logitech SetPoint software version 4.80 under 64-bit Windows Vista.
http://logitech-louk.navisite.net/web/ftp/pub/techsupport/mouse/setpoint480_x64.exe
When we started using SetPoint, I was able to deploy version 4.80 to all computers in an unattended manner. I downloaded the "[font="courier new"]setpoint480_x64.exe" installer and extracted the "[font="courier new"]1-SetPoint" subfolder (using any archive manager, such as 7-Zip). Inside that folder, I ran the command "[font="courier new"]setup.exe /s" to install silently.
This worked great, using a combination of Microsoft Deployment Toolkit (MDT) for new bare metal workstations and Microsoft System Center Essentials (SCE, which uses WSUS to serve custom packages in addition to regular Microsoft updates) to deploy to workstations already in use. This was easy because #1 I found the silent switch easily ("[font="courier new"]setup.exe /s", this was an InstallShield package) and #2 no older version of the software was ever present on the workstations.
Now, we want to upgrade to SetPoint 6.10, which is the only version currently downloadable from Logitech's website. My first approach is to try the same as with version 4.80. I downloaded the "[font="courier new"]setpoint610_x64.exe" installer and extracted the "[font="courier new"]5-SetPoint" subfolder. Inside that folder, I run the command "[font="courier new"]setup.exe /s". This does not work at all.
http://www.logitech.com/en-us/428/130?softwareid=671&osid=13§ion=downloads
http://logitech-louk.navisite.net/web/ftp/pub/techsupport/mouse/setpoint610_x64.exe
So I have fallen back to the original installer with "[font="courier new"]setpoint610_x64.exe /s". This seems to work: version 6.10 gets installed. However, version 4.80 does not get uninstalled and there seems to be a mix up between both versions, with 4.80 staying in the system tray.
I have been examining the "[font="courier new"]compcfg.ini" files, trying to make sense out of them. I found keys such as "[font="courier new"]LaunchParameters" and "[font="courier new"]LaunchSilentParameters" that looked promising, but I could not get anything out of them, especially without any official reference from Logitech.
I contacted Logitech support on this matter. The installer will not remove an older version; their only advice is to manually remove the older version before installing the newer. So, I started looking for a way to uninstall version 4.80 silently before installing version 6.10, and chaining those two steps in a script. It seems that adding "[font="courier new"]-s" to the registered uninstall string "[font="courier new"]C:\Program Files (x86)\InstallShield Installation Information\{F29B21BD-CAA6-445F-8EF7-A7E2B9D8B14E}\setup.exe" -runfromtemp -l0x0009 -removeonly" can work.
However, chaining does not work. When run silently, the uninstaller for version 4.80 starts and returns immediately, which means that the installer for version 6.10 also starts and runs in parallel, and I end up with the same mix up as above. I tried to find ways to wait for the uninstallation process to finish, but no luck. Logitech support, contacted again on this matter, simply told me they do not support scripts...
Any idea or suggestion is welcome, as I am running out of practical ideas and have spent way too much time on this already. My last idea was to change my script to make it artificially wait for the uninstallation/installation processes to finish before moving on. Some kind of loop with a short timer and monitoring a directory or registry key to disappear (uninstallation) or appear (installation), which would mean the process is done. I do not think I will take the time to implement this, however.
Alex
0 Comments
[ + ] Show comments
Answers (11)
Please log in to answer
Posted by:
pjgeutjens
14 years ago
When run silently, the uninstaller for version 4.80 starts and returns immediately, which means that the installer for version 6.10 also starts and runs in parallel, and I end up with the same mix up as above.
this sounds like the setup.exe actually triggers some other executable that does the uninstall, and immediately returns. If you can identify that second (un)installer, you could conceivably create a script that continuously checks for the presence of this process and only starts the 2nd part (the install of version 6.10) once this uninstaller has run its course.
EDIT: sorry, this is actually what you said in the last paragraph of your post, I should actually read the complete post before I answer, shame on me [8|]
EDIT2: trying to be useful afterall, have you tried adding the /clone_wait parameter to the uninstall string?
PJ
Posted by:
anonymous_9363
14 years ago
In most cases, the reason that set-up executeables start and finish almost immediately is that they spawn another executeable to do the work. So you could:
- determine what that other EXE is and what parameters are passed to it, then execute that
- capture the uninstall to an MSI (sounds bizarre, I know) and use the resulting MSI instead of the vendor's EXE.
- take the time to write the script you mention. Any such script would be better off monitoring the spawned process, rather than file and/or registry.
- determine what that other EXE is and what parameters are passed to it, then execute that
- capture the uninstall to an MSI (sounds bizarre, I know) and use the resulting MSI instead of the vendor's EXE.
- take the time to write the script you mention. Any such script would be better off monitoring the spawned process, rather than file and/or registry.
Posted by:
AlexFicelle
14 years ago
Thanks for the input, guys!
No luck with the [font="courier new"]/clone_wait parameters.
When uninstalling version 4.80, [font="courier new"]setup.exe does indeed extract a number of files and folder to [font="courier new"]%TEMP% and then spawns. More precisely, it creates two folders with changing GUID's as names. One of them contains what seems to be a setup "driver" (as in, the installation is driven by this) with the following files: [font="courier new"]setup.exe, [font="courier new"]setup.ini, [font="courier new"]_Setup.dll and [font="courier new"]ISSetup.dll. The other directory contains a few files: [font="courier new"]corecomp.ini, [font="courier new"]dotnetinstaller.exe and [font="courier new"]ISBEW64.exe and a subdirectory (its name is the ProductCode GUID of the software) with a whole bunch of files with certain names I recognize as pertaining to Logitech SetPoint.
Using Windows Task Manager, I can see the first setup.exe is calling the setup.exe in the first directory but it will not show me the parameters passed (I suspect because this is a 32-bit process in a 64-bit environment). My usual "easy" technique to steal the command line is to replace the file by a dummy which simply shows the parameters it receives, but this cannot work here given how the location changes on each run...
Any better idea on how to grab those parameters?
No luck with the [font="courier new"]/clone_wait parameters.
When uninstalling version 4.80, [font="courier new"]setup.exe does indeed extract a number of files and folder to [font="courier new"]%TEMP% and then spawns. More precisely, it creates two folders with changing GUID's as names. One of them contains what seems to be a setup "driver" (as in, the installation is driven by this) with the following files: [font="courier new"]setup.exe, [font="courier new"]setup.ini, [font="courier new"]_Setup.dll and [font="courier new"]ISSetup.dll. The other directory contains a few files: [font="courier new"]corecomp.ini, [font="courier new"]dotnetinstaller.exe and [font="courier new"]ISBEW64.exe and a subdirectory (its name is the ProductCode GUID of the software) with a whole bunch of files with certain names I recognize as pertaining to Logitech SetPoint.
Using Windows Task Manager, I can see the first setup.exe is calling the setup.exe in the first directory but it will not show me the parameters passed (I suspect because this is a 32-bit process in a 64-bit environment). My usual "easy" technique to steal the command line is to replace the file by a dummy which simply shows the parameters it receives, but this cannot work here given how the location changes on each run...
Any better idea on how to grab those parameters?
Posted by:
pjgeutjens
14 years ago
Posted by:
anonymous_9363
14 years ago
Most InstallShield-driven stubs allow you to create a log file (although I can't recall the switch to use - Mr G will turn that up). Perhaps that might contain the command line?
Anyway, if it was me, I'd be using the process-watching script I downloaded a decade ago or going down the route of creating an uninstalling MSI. You could have created the latter by now! :-)
Anyway, if it was me, I'd be using the process-watching script I downloaded a decade ago or going down the route of creating an uninstalling MSI. You could have created the latter by now! :-)
Posted by:
AlexFicelle
14 years ago
Sadly, I have given up on this due to time constraints. We will probably upgrade to the latest version at the same time we upgrade to Windows 7: most likely a clean installation with USMT to backup and restore the users' data and settings.
Oddly, my contacts with Logitech support have been extremely frustrating: they do not even seem to understand the need for an unattended setup, and even less an unattended upgrade of their software!
Again, thanks a lot for all your suggestions. And sorry for the long delay, I have been away from the office these past few weeks.
Oddly, my contacts with Logitech support have been extremely frustrating: they do not even seem to understand the need for an unattended setup, and even less an unattended upgrade of their software!
Again, thanks a lot for all your suggestions. And sorry for the long delay, I have been away from the office these past few weeks.
Posted by:
oidnhofa
14 years ago
Hi!
Maybe I can help you a little...[;)]
If you have powershell, you can use this way to "wait" for the process till it's finished.
I hope this will help you...
Maybe I can help you a little...[;)]
If you have powershell, you can use this way to "wait" for the process till it's finished.
$process = [System.Diagnostics.Process]::Start("C:\temp\uninstall4.8.exe", "<Parameters>")
while (!$process.HasExited)
{
[System.Threading.Thread]::Sleep(500)
}
#uninstall finished
$process = [System.Diagnostics.Process]::Start("C:\temp\setpoint610.exe", "/s")
while (!$process.HasExited)
{
[System.Threading.Thread]::Sleep(500)
}
#install finished...
I hope this will help you...
Posted by:
AlexFicelle
14 years ago
ORIGINAL: oidnhofa
Hi!
Maybe I can help you a little...[;)]
If you have powershell, you can use this way to "wait" for the process till it's finished.
I hope this will help you...
Hi, thanks for the suggestion. Sadly, like I said, I can't take the time to try it out. But somehow, I don't think this would work. I think the problem stays the same: the first process spawns and then returns. Your routine will thus probably also move on while it's actually not done uninstalling.
Alex
Posted by:
oidnhofa
14 years ago
Posted by:
hannimos
13 years ago
Change defaults in the setup.ini to turn off updates, registration, tray icon....
make changes, then run setup.exe manually. You should notice that the update, and registration screens do not appear. (or tray icon)
Changes
-------------------------------
[Variables]
register="no"
updater="no"
preCheck="no"
showUI="no"
showTrayIcon="no"
;----- Radio button default value -----
Reboot=1
NoReboot=0
Logi_radio_01=0
Logi_radio_02=0
Logi_radio_04=0
; Check for updates
Logi_checkbox_01=0
; Run app
Logi_checkbox_02=1
;Launch eReg
Logi_checkbox_03=0
GUID="{1C28AF25-378C-4D48-B993-7B1574FE1A6D}"
;------ Check updater ---------
1a-Updater=0
make changes, then run setup.exe manually. You should notice that the update, and registration screens do not appear. (or tray icon)
Changes
-------------------------------
[Variables]
register="no"
updater="no"
preCheck="no"
showUI="no"
showTrayIcon="no"
;----- Radio button default value -----
Reboot=1
NoReboot=0
Logi_radio_01=0
Logi_radio_02=0
Logi_radio_04=0
; Check for updates
Logi_checkbox_01=0
; Run app
Logi_checkbox_02=1
;Launch eReg
Logi_checkbox_03=0
GUID="{1C28AF25-378C-4D48-B993-7B1574FE1A6D}"
;------ Check updater ---------
1a-Updater=0
Posted by:
Gluek
13 years ago
How should I change setup.ini if I using "setpoint620.exe /s" option for silent install?
Do you mean I need to change setup.ini inside setpoint620.exe file or unpack it somewhere before?
Also, setpoint620.exe have 2 setup.ini files inside (but almost same).
Do you mean I need to change setup.ini inside setpoint620.exe file or unpack it somewhere before?
Also, setpoint620.exe have 2 setup.ini files inside (but almost same).
ORIGINAL: hannimos
Change defaults in the setup.ini to turn off updates, registration, tray icon....
make changes, then run setup.exe manually. You should notice that the update, and registration screens do not appear. (or tray icon)
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
so that the conversation will remain readable.