¿Cómo puedo detectar si el usuario ya instaló el software y, de ser así, cómo ofrecer la posibilidad de eliminar la versión anterior?¿Cómo detectar la instalación anterior y la eliminación de la oferta?
He escrito algunas líneas para verificarlo. ¿Es correcto por ahora? Si esto es correcto, ¿cómo puedo dejar que el usuario elija si desea continuar la instalación o desinstalar la versión anterior?
#define UNINSTKEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\setupname_is1"
var
uninstallPath: string;
function InitializeSetup: Boolean;
begin
if (RegQueryStringValue(HKLM,'{#UNINSTKEY}','UninstallString',uninstallPath)) and
(uninstallPath <> '') and (fileexists(uninstallPath)) then
begin
Result :=
(MsgBox(CustomMessage('NotVerifiedVersionFound'), mbConfirmation,
MB_YESNO or MB_DEFBUTTON2) = IDYES);
end;
{ ... }
end;
Tenga en cuenta que normalmente no hay ninguna necesidad de hacer esto con una configuración basada Inno. Las excepciones son cuando se actualiza desde una configuración que no es Inno. Una vez que estás usando Inno, mágicamente maneja todo esto para ti. – Deanna
posible duplicado de [InnoSetup: cómo desinstalar automáticamente la versión instalada anterior?] (Http://stackoverflow.com/questions/2000296/innosetup-how-to-automatically-uninstall-previous-installed-version) – Deanna
@Deanna Para mi cliente, es cierto que este software siempre se instalará con una configuración inno. Pero Inno en realidad no lo "maneja", ¿verdad? Todo lo que hace, es simplemente sobrescribir todos los archivos antiguos. Y puedo generar un desinstalador. Pero quiero la funcionalidad Desinstalar dentro de mi configuración inicial. – Exa