Jak wykryć, czy użytkownik już zainstalował oprogramowanie, a jeśli tak, to w jaki sposób zaoferować możliwość usunięcia starej wersji?Jak wykryć starą instalację i usunąć ofertę?
Napisałem kilka linii, żeby to sprawdzić. Czy na razie jest to poprawne? Jeśli jest to poprawne, to w jaki sposób mogę pozwolić użytkownikowi wybrać, czy chce kontynuować instalację, czy odinstalować starą wersję?
#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;
Zauważ, że nie ma żadnej potrzeby normalnie to zrobić z Inno Setup opartej. Wyjątki dotyczą aktualizacji z konfiguracji Inno. Kiedy używasz Inno, to w magiczny sposób radzi sobie z tym wszystkim. – Deanna
możliwy duplikat [InnoSetup: Jak automatycznie odinstalować poprzednią zainstalowaną wersję?] (Http://stackoverflow.com/questions/2000296/innosetup-how-to-automatycznie-programuj-poprzednia-instalowana-wersja-) – Deanna
@Deanna For my Klient jest prawdą, że to oprogramowanie zawsze będzie instalowane z konfiguracją inno. Ale Inno tak naprawdę "nie radzi sobie" z tym, prawda? Wszystko, co robi, to po prostu nadpisanie wszystkich starych plików. I mogę wygenerować Uninstaller. Ale chcę funkcji odinstaluj w mojej początkowej konfiguracji. – Exa