[Setup] AppName=Lyrik AppVerName=Lyrik 1.3.3 beta2 DefaultDirName={pf}\Lyrik DisableProgramGroupPage=true UsePreviousGroup=false AppendDefaultGroupName=false ShowLanguageDialog=yes UninstallFilesDir={commonappdata}\Lyrik\Uninstall\ DirExistsWarning=no DisableReadyMemo=true AlwaysShowComponentsList=false DisableReadyPage=true AppPublisher=Lyrik InternalCompressLevel=ultra DisableFinishedPage=false OutputDir=Output OutputBaseFilename=Setup ShowComponentSizes=false SolidCompression=true LanguageDetectionMethod=locale ShowUndisplayableLanguages=true RestartIfNeededByRun=false Compression=lzma/ultra UsePreviousSetupType=false UsePreviousTasks=false AllowNoIcons=false [Dirs] Name: {app}\Plugins Name: {localappdata}\Lyrik Name: {userappdata}\Lyrik [Files] Source: Lyrik.exe; DestDir: {app}; DestName: Lyrik.exe; Flags: overwritereadonly ignoreversion replacesameversion Source: setup\Lyrik.ico; DestDir: {app} Source: ar.ini; DestDir: {app}; DestName: ar.ini; Flags: overwritereadonly ignoreversion replacesameversion Source: enus.ini; DestDir: {app}; DestName: enus.ini; Flags: overwritereadonly ignoreversion replacesameversion Source: fr.ini; DestDir: {app}; DestName: fr.ini; Flags: overwritereadonly ignoreversion replacesameversion Source: ger.ini; DestDir: {app}; DestName: ger.ini; Flags: overwritereadonly ignoreversion replacesameversion Source: hu.ini; DestDir: {app}; DestName: hu.ini; Flags: overwritereadonly ignoreversion replacesameversion Source: pl.ini; DestDir: {app}; DestName: pl.ini; Flags: overwritereadonly ignoreversion replacesameversion Source: ptbr.ini; DestDir: {app}; DestName: ptbr.ini; Flags: overwritereadonly ignoreversion replacesameversion Source: setup\about.txt; DestDir: {app}; DestName: about.txt; Flags: overwritereadonly Source: Plugins\Winamp\Output\WinampPlugin.exe; DestDir: {app}\Plugins; DestName: Winamp.exe; Flags: overwritereadonly ignoreversion replacesameversion Source: setup\MSWINSCK.OCX; DestDir: {sys}; Flags: regserver uninsneveruninstall restartreplace Source: setup\COMDLG32.OCX; DestDir: {sys}; Flags: regserver uninsneveruninstall restartreplace Source: setup\sunitext.ocx; DestDir: {sys}; Flags: regserver uninsneveruninstall restartreplace Source: setup\config.ini; DestDir: {userappdata}\Lyrik; DestName: config.ini; Flags: onlyifdoesntexist Source: setup\cache.dat; DestDir: {localappdata}\Lyrik; DestName: cache.dat; Flags: onlyifdoesntexist Source: setup\cache.id; DestDir: {localappdata}\Lyrik; DestName: cache.id; Flags: onlyifdoesntexist Source: setup\LS Register.exe; DestDir: {app}; Flags: replacesameversion Source: setup\LyrikString.dll; DestDir: {app}; Flags: replacesameversion [Languages] Name: EnglishUS; MessagesFile: setup\English.isl Name: PortuguesBR; MessagesFile: setup\BrazilianPortuguese.isl Name: Arabic; MessagesFile: setup\Arabic-4-5.1.11.isl Name: Polish; MessagesFile: setup\Polish.isl Name: French; MessagesFile: setup\French.isl Name: German; MessagesFile: setup\German.isl Name: Hungarian; MessagesFile: setup\Hungarian.isl [Registry] Root: HKLM; SubKey: Software\Lyrik; ValueType: string; ValueName: Path; ValueData: {app}\Lyrik.exe %H; Flags: uninsdeletekey Root: HKCR; SubKey: LyrikString.Strings; ValueType: string; ValueData: LyrikString.Strings; Flags: createvalueifdoesntexist Root: HKCR; SubKey: LyrikString.Strings\CLSID; ValueType: string; ValueData: {{18783AFB-13DE-35E9-B98C-9F501F61007F}; Flags: createvalueifdoesntexist Root: HKCR; SubKey: CLSID\{{18783AFB-13DE-35E9-B98C-9F501F61007F}; ValueType: string; ValueData: LyrikString.Strings; Flags: createvalueifdoesntexist Root: HKCR; SubKey: CLSID\{{18783AFB-13DE-35E9-B98C-9F501F61007F}\InprocServer32; ValueType: string; ValueData: mscoree.dll; Flags: createvalueifdoesntexist Root: HKCR; SubKey: CLSID\{{18783AFB-13DE-35E9-B98C-9F501F61007F}\InprocServer32; ValueType: string; ValueName: ThreadingModel; ValueData: Both; Flags: createvalueifdoesntexist Root: HKCR; SubKey: CLSID\{{18783AFB-13DE-35E9-B98C-9F501F61007F}\InprocServer32; ValueType: string; ValueName: Class; ValueData: LyrikString.Strings; Flags: createvalueifdoesntexist Root: HKCR; SubKey: CLSID\{{18783AFB-13DE-35E9-B98C-9F501F61007F}\InprocServer32; ValueType: string; ValueName: Assembly; ValueData: LyrikString, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3a388315cc90b702; Flags: createvalueifdoesntexist Root: HKCR; SubKey: CLSID\{{18783AFB-13DE-35E9-B98C-9F501F61007F}\InprocServer32; ValueType: string; ValueName: RuntimeVersion; ValueData: v2.0.50727; Flags: createvalueifdoesntexist Root: HKCR; SubKey: CLSID\{{18783AFB-13DE-35E9-B98C-9F501F61007F}\InprocServer32\1.0.0.0; ValueType: string; ValueName: Class; ValueData: LyrikString.Strings; Flags: createvalueifdoesntexist Root: HKCR; SubKey: CLSID\{{18783AFB-13DE-35E9-B98C-9F501F61007F}\InprocServer32\1.0.0.0; ValueType: string; ValueName: Assembly; ValueData: LyrikString, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3a388315cc90b702; Flags: createvalueifdoesntexist Root: HKCR; SubKey: CLSID\{{18783AFB-13DE-35E9-B98C-9F501F61007F}\InprocServer32\1.0.0.0; ValueType: string; ValueName: RuntimeVersion; ValueData: v2.0.50727; Flags: createvalueifdoesntexist Root: HKCR; SubKey: CLSID\{{18783AFB-13DE-35E9-B98C-9F501F61007F}\ProgId; ValueType: string; ValueName: ; ValueData: LyrikString.Strings; Flags: createvalueifdoesntexist Root: HKCR; SubKey: Record\{{BB4348DE-1257-3F3C-9A80-F82F6017BB88}\1.0.0.0; ValueType: string; ValueName: Class; ValueData: LyrikString.Strings+Encodings; Flags: createvalueifdoesntexist Root: HKCR; SubKey: Record\{{BB4348DE-1257-3F3C-9A80-F82F6017BB88}\1.0.0.0; ValueType: string; ValueName: Assembly; ValueData: LyrikString, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3a388315cc90b702; Flags: createvalueifdoesntexist Root: HKCR; SubKey: Record\{{BB4348DE-1257-3F3C-9A80-F82F6017BB88}\1.0.0.0; ValueType: string; ValueName: RuntimeVersion; ValueData: v2.0.50727; Flags: createvalueifdoesntexist [Run] Filename: {app}\LS Register.exe; WorkingDir: {app}; Flags: runhidden; MinVersion: 0,5.01.2600 Filename: {app}\Plugins\Winamp.exe; WorkingDir: {app}\Plugins; Tasks: plugin_Winamp Filename: {app}\Lyrik.exe; WorkingDir: {app}; Flags: nowait; Check: LyrikClosed; Parameters: install [Tasks] Name: plugin_Winamp; Description: Instalar ou atualizar o plugin do Winamp; Languages: PortuguesBR Name: plugin_Winamp; Description: Install or update Winamp's Plugin; Languages: EnglishUS Name: plugin_Winamp; Description: Install or update Winamp's Plugin; Languages: Arabic Name: plugin_Winamp; Description: Zainstaluj lub zaktualizuj Winampa Plugin; Languages: Polish Name: plugin_Winamp; Description: Installieren oder Aktualisieren von Winamp Plugin; Languages: German Name: plugin_Winamp; Description: Installer ou mettre ŕ jour Plugin Winamp; Languages: French Name: plugin_Winamp; Description: Telepítse vagy frissítse Winamp Plugin; Languages: Hungarian Name: deskIco; Description: {cm:CreateDesktopIcon} [INI] Filename: {userappdata}\Lyrik\config.ini; Section: lyrik; Key: conn_Server; String: www.lyrikproject.net; Flags: createkeyifdoesntexist Filename: {userappdata}\Lyrik\config.ini; Section: lyrik; Key: cache_simple; String: 1; Flags: createkeyifdoesntexist Filename: {userappdata}\Lyrik\config.ini; Section: lyrik; Key: language_name; String: ptbr; Languages: PortuguesBR Filename: {userappdata}\Lyrik\config.ini; Section: lyrik; Key: language_name; String: enus; Languages: EnglishUS Filename: {userappdata}\Lyrik\config.ini; Section: lyrik; Key: language_name; String: ar; Languages: Arabic Filename: {userappdata}\Lyrik\config.ini; Section: lyrik; Key: language_name; String: pl; Languages: Polish Filename: {userappdata}\Lyrik\config.ini; Section: lyrik; Key: language_name; String: ger; Languages: German Filename: {userappdata}\Lyrik\config.ini; Section: lyrik; Key: language_name; String: fr; Languages: French Filename: {userappdata}\Lyrik\config.ini; Section: lyrik; Key: language_name; String: hu; Languages: Hungarian [InstallDelete] Name: {app}\english.ini; Type: files [Icons] Name: {commondesktop}\Lyrik; Filename: {app}\Lyrik.exe; WorkingDir: {app}; Tasks: " deskIco"; Languages: ; IconFilename: {app}\Lyrik.ico; IconIndex: 0 [Code] /////////////////////////////////////////////////// // External API's functions /////////////////////////////////////////////////// function FindWindow (stClassName: String; WindowName: String): Integer; external 'FindWindowA@user32.dll stdcall'; function SendMessage (hwnd: Integer; wMsg: Integer; wParam: Integer; lParam: Integer): Integer; external 'SendMessageA@user32.dll stdcall'; procedure Sleep (dwMilliseconds: Integer); external 'Sleep@kernel32.dll stdcall'; /////////////////////////////////////////////////// // Global vars /////////////////////////////////////////////////// var bl_LyrikClosed: Boolean; /////////////////////////////////////////////////// // Close Lyrik /////////////////////////////////////////////////// procedure CloseLyrik(); var handle: Integer; ret: Integer; retry: Integer; begin // Start variables bl_LyrikClosed := False; retry := 20; // Try to find Lyrik's handle handle := FindWindow('', 'Lyrik'); // If not found if (handle = 0) then begin // Try to find another way handle := FindWindow('Lyrik', ''); end; // If found it if (handle <> 0) then begin // Send a close command to Lyrik ret := SendMessage(handle, 16, 0, 0); // While Lyrik is found and while can wait for close while (handle <> 0) and (retry > 0) do begin // Wait sleep(250); // Try to find another way handle := FindWindow('Lyrik', ''); // Discount try retry := retry - 1; end; // If closed if (handle = 0) then begin // Set that lyrik was closed bl_LyrikClosed := True; end; end; end; /////////////////////////////////////////////////// // Returns if Lyrik has been closed by setup /////////////////////////////////////////////////// function LyrikClosed(): Boolean; begin // Returns result := bl_LyrikClosed; end; /////////////////////////////////////////////////// // Page-change /////////////////////////////////////////////////// procedure CurStepChanged(CurStep: TSetupStep); begin // If setup starts if (CurStep = ssInstall) then begin // Close Lyrik CloseLyrik; end; end;