; Script generated by the My Inno Setup Extensions Script Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! [Setup] AppName=@APPNAME@ AppVerName=@APPNAME@-@DICTMAJOR@.@DICTMINOR@-@DICTMICRO@ DefaultDirName={code:DefaultAspellPath} DefaultGroupName=@PACKAGE@ ;LicenseFile=@LICENSEFILE@ InfoBeforeFile=@INFOBEFOREFILE@ AppPublisher=GNU AllowNoIcons=yes DirExistsWarning=no DisableStartupPrompt=yes [Files] Source: "{src}\data\*.*"; DestDir: "{app}\data"; CopyMode: alwaysoverwrite; Flags: external; Source: "{src}\dict\*.*"; DestDir: "{app}\dict"; CopyMode: alwaysoverwrite; Flags: external; [Icons] Name: "{group}\Uninstall @PACKAGE@-@DICTLANG@-@DICTMAJOR@.@DICTMINOR@-@DICTMICRO@"; Filename: "{uninstallexe}" [Registry] Root: HKLM; Subkey: "Software\@PACKAGE@-@DICTLANG@"; ValueType: string; ValueName: ""; ValueData: "{app}"; Flags: uninsdeletekey Root: HKLM; Subkey: "Software\@PACKAGE@-@DICTLANG@"; ValueType: string; ValueName: "UninstallString"; ValueData: "{uninstallexe}"; Flags: uninsdeletekey Root: HKLM; Subkey: "Software\@PACKAGE@-@DICTLANG@"; ValueType: dword; ValueName: "MajorVersion"; ValueData: "@DICTMAJOR@"; Flags: uninsdeletekey Root: HKLM; Subkey: "Software\@PACKAGE@-@DICTLANG@"; ValueType: dword; ValueName: "MinorVersion"; ValueData: "@DICTMINOR@"; Flags: uninsdeletekey Root: HKLM; Subkey: "Software\@PACKAGE@-@DICTLANG@"; ValueType: dword; ValueName: "MicroVersion"; ValueData: "@DICTMICRO@"; Flags: uninsdeletekey [UninstallDelete] Type: dirifempty; Name: "{app}\dict"; Type: dirifempty; Name: "{app}\data"; Type: dirifempty; Name: "{app}"; [Code] function AspellPath(Default: String):string; var s:string; begin RegQueryStringValue(HKLM, 'Software\@PACKAGE@', '', s); Result := s; end; function DefaultAspellPath(Default: String): String; begin Result := AspellPath(''); if Result = '' then Result := ExpandConstant('{pf}')+'\@PACKAGE@'; end; function DictionaryInstalled(var version, uninstallcmd:string):boolean; var maj,min,mic:Cardinal; begin Result := RegQueryDWordValue(HKLM, 'Software\@PACKAGE@-@DICTLANG@', 'MajorVersion', maj) and RegQueryDWordValue(HKLM, 'Software\@PACKAGE@-@DICTLANG@', 'MinorVersion', min) and RegQueryDWordValue(HKLM, 'Software\@PACKAGE@-@DICTLANG@', 'MicroVersion', mic); if not RegQueryStringValue(HKLM, 'Software\@PACKAGE@-@DICTLANG@', 'UninstallString', uninstallcmd) then if not RegQueryStringValue(HKLM, 'Software\@PACKAGE@-@DICTLANG@', 'Uninstall', uninstallcmd) then RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\@PACKAGE@-@DICTLANG@', 'UninstallString', uninstallcmd); version:=IntToStr(maj)+'.'+IntToStr(min)+'-'+IntToStr(mic); end; function InitializeSetup(): Boolean; var version,uninst:string; msgres,execres:integer; begin if DictionaryInstalled(version,uninst) then begin msgres:=MsgBox('@PACKAGE@-@DICTLANG@-'+version+' is currently installed.'+#13#13 +'Do you want to uninstall it first?.', mbError, MB_YESNOCANCEL); case msgres of IdYes: begin InstExec(uninst, '', '', true, true, SW_SHOWNORMAL, execres); Result:=InitializeSetup(); end; IdCancel: Result:=false; IdNo: Result:=true; end; end; if AspellPath('')<>'' then Result := true else if MsgBox('@PACKAGE@ not found. Do you want to abort?', mbConfirmation, MB_YESNO) = idYes then Result:=true; end; procedure DeInitializeSetup(); begin end;