Hi All,
How do I uninstall previous versions of my product before installing new ones?
Thanks,
Alberto
How do I uninstall previous versions of my product before installing new ones?
Thanks,
Alberto
[COLOR="#008000"]-- unique registry key is set in the Uninstall Settings[/COLOR] uninstall_key [COLOR="#FF0000"]=[/COLOR] Registry[COLOR="#FF0000"].[/COLOR]GetValue(HKEY_LOCAL_MACHINE[COLOR="#FF0000"],[/COLOR] [COLOR="#800080"]"SOFTWARE[COLOR="#800080"]\\[/COLOR]Microsoft[COLOR="#800080"]\\[/COLOR]Windows[COLOR="#800080"]\\[/COLOR]CurrentVersion[COLOR="#800080"]\\[/COLOR]Uninstall[COLOR="#800080"]\\[/COLOR]uniqueregkey"[/COLOR][COLOR="#FF0000"],[/COLOR] [COLOR="#800080"]"UninstallString"[/COLOR][COLOR="#FF0000"],[/COLOR] [COLOR="#0000FF"]false[/COLOR]); [COLOR="#008000"]-- extract uninstaller name and path from the key[/COLOR] [COLOR="#008000"]-- example: "C:\folder\uninstall.exe" "/U:C:\folder\Uninstall.xml"[/COLOR] sMyUninstallInfo [COLOR="#FF0000"]=[/COLOR] [COLOR="#FF0000"]{}[/COLOR]; [COLOR="#0000FF"]local[/COLOR] i [COLOR="#FF0000"]=[/COLOR] [COLOR="#000000"]1[/COLOR]; [COLOR="#0000FF"]for[/COLOR] s [COLOR="#0000FF"]in[/COLOR] [COLOR="#0000FF"]string.gfind[/COLOR](uninstall_key[COLOR="#FF0000"],[/COLOR] [COLOR="#800080"]'"([^%"]+)"'[/COLOR]) [COLOR="#0000FF"]do[/COLOR] sMyUninstallInfo[COLOR="#FF0000"][[/COLOR]i[COLOR="#FF0000"]][/COLOR] [COLOR="#FF0000"]=[/COLOR] s; i [COLOR="#FF0000"]=[/COLOR] i + [COLOR="#000000"]1[/COLOR]; [COLOR="#0000FF"]end[/COLOR] uninstaller [COLOR="#FF0000"]=[/COLOR] sMyUninstallInfo[COLOR="#FF0000"][[/COLOR][COLOR="#000000"]1[/COLOR][COLOR="#FF0000"]][/COLOR]; parameters [COLOR="#FF0000"]=[/COLOR] sMyUninstallInfo[COLOR="#FF0000"][[/COLOR][COLOR="#000000"]2[/COLOR][COLOR="#FF0000"]][/COLOR]; StatusDlg[COLOR="#FF0000"].[/COLOR]Show(); StatusDlg[COLOR="#FF0000"].[/COLOR]SetMessage([COLOR="#800080"]"Please wait..."[/COLOR]); StatusDlg[COLOR="#FF0000"].[/COLOR]ShowProgressMeter([COLOR="#0000FF"]false[/COLOR]); [COLOR="#008000"]-- perform the uninstall, silently[/COLOR] File[COLOR="#FF0000"].[/COLOR]Run(uninstaller[COLOR="#FF0000"],[/COLOR] parameters [COLOR="#FF0000"]..[/COLOR] [COLOR="#800080"]" /S"[/COLOR][COLOR="#FF0000"],[/COLOR] [COLOR="#800080"]""[/COLOR][COLOR="#FF0000"],[/COLOR] SW_HIDE[COLOR="#FF0000"],[/COLOR] [COLOR="#0000FF"]true[/COLOR]); [COLOR="#008000"]-- now wait for the uninstaller to be deleted in the background before deploying the new version[/COLOR] [COLOR="#008000"]-- remove quotes from the filename, if any[/COLOR] uninstaller [COLOR="#FF0000"]=[/COLOR] u_path; [COLOR="#0000FF"]if[/COLOR] (String[COLOR="#FF0000"].[/COLOR]Left(uninstaller[COLOR="#FF0000"],[/COLOR] [COLOR="#000000"]1[/COLOR]) [COLOR="#FF0000"]==[/COLOR] [COLOR="#800080"]"[COLOR="#800080"]\"[/COLOR]"[/COLOR]) [COLOR="#0000FF"]then[/COLOR] uninstaller [COLOR="#FF0000"]=[/COLOR] String[COLOR="#FF0000"].[/COLOR]Mid(uninstaller[COLOR="#FF0000"],[/COLOR] [COLOR="#000000"]2[/COLOR][COLOR="#FF0000"],[/COLOR] -[COLOR="#000000"]1[/COLOR]); [COLOR="#0000FF"]end[/COLOR] [COLOR="#0000FF"]if[/COLOR] (String[COLOR="#FF0000"].[/COLOR]Right(uninstaller[COLOR="#FF0000"],[/COLOR] [COLOR="#000000"]1[/COLOR]) [COLOR="#FF0000"]==[/COLOR] [COLOR="#800080"]"[COLOR="#800080"]\"[/COLOR]"[/COLOR]) [COLOR="#0000FF"]then[/COLOR] uninstaller [COLOR="#FF0000"]=[/COLOR] String[COLOR="#FF0000"].[/COLOR]Mid(uninstaller[COLOR="#FF0000"],[/COLOR] [COLOR="#000000"]1[/COLOR][COLOR="#FF0000"],[/COLOR] String[COLOR="#FF0000"].[/COLOR]Length(uninstaller)-[COLOR="#000000"]1[/COLOR]); [COLOR="#0000FF"]end[/COLOR] [COLOR="#0000FF"]while[/COLOR] File[COLOR="#FF0000"].[/COLOR]DoesExist(uninstaller) [COLOR="#0000FF"]do[/COLOR] SetupData[COLOR="#FF0000"].[/COLOR]WriteToLogFile([COLOR="#800080"]"Waiting one second...[COLOR="#800080"]\r[/COLOR][COLOR="#800080"]\n[/COLOR]"[/COLOR][COLOR="#FF0000"],[/COLOR] [COLOR="#0000FF"]true[/COLOR]); Application[COLOR="#FF0000"].[/COLOR]Sleep([COLOR="#000000"]1000[/COLOR]); [COLOR="#0000FF"]end[/COLOR] StatusDlg[COLOR="#FF0000"].[/COLOR]Hide();
uninstall_key = Registry.GetValue(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\uniqueregkey", "UninstallString", false);
[COLOR="#008000"]-- unique registry key is set in the Uninstall Settings[/COLOR] uninstall_key [COLOR="#FF0000"]=[/COLOR] Registry[COLOR="#FF0000"].[/COLOR]GetValue(HKEY_LOCAL_MACHINE[COLOR="#FF0000"],[/COLOR] [COLOR="#800080"]"SOFTWARE[COLOR="#800080"]\\[/COLOR]Microsoft[COLOR="#800080"]\\[/COLOR]Windows[COLOR="#800080"]\\[/COLOR]CurrentVersion[COLOR="#800080"]\\[/COLOR]Uninstall[COLOR="#800080"]\\[/COLOR]uniqueregkey"[/COLOR][COLOR="#FF0000"],[/COLOR] [COLOR="#800080"]"UninstallString"[/COLOR][COLOR="#FF0000"],[/COLOR] [COLOR="#0000FF"]false[/COLOR]); [COLOR="#0000FF"]if[/COLOR] (uninstall_key [COLOR="#FF0000"]~=[/COLOR] [COLOR="#800080"]""[/COLOR]) [COLOR="#0000FF"]then[/COLOR] [COLOR="#008000"]-- extract uninstaller name and path from the key[/COLOR] [COLOR="#008000"]-- example: "C:\folder\uninstall.exe" "/U:C:\folder\Uninstall.xml"[/COLOR] [COLOR="#008000"]-- code suppressed ...[/COLOR] [COLOR="#0000FF"]while[/COLOR] File[COLOR="#FF0000"].[/COLOR]DoesExist(uninstaller) [COLOR="#0000FF"]do[/COLOR] SetupData[COLOR="#FF0000"].[/COLOR]WriteToLogFile([COLOR="#800080"]"Waiting one second...[COLOR="#800080"]\r[/COLOR][COLOR="#800080"]\n[/COLOR]"[/COLOR][COLOR="#FF0000"],[/COLOR] [COLOR="#0000FF"]true[/COLOR]); Application[COLOR="#FF0000"].[/COLOR]Sleep([COLOR="#000000"]1000[/COLOR]); [COLOR="#0000FF"]end[/COLOR] StatusDlg[COLOR="#FF0000"].[/COLOR]Hide(); [COLOR="#0000FF"]end[/COLOR]
uniqueRegKey = "MyProduct 4.0 Beta" -- unique registry key is set in the Uninstall Settings uninstall_key = Registry.GetValue(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\"..uniqueRegKey, "UninstallString", false);
Comment