diff --git a/bucket/lazarus.json b/bucket/lazarus.json index 71b2236e217747..151406a5ca44eb 100644 --- a/bucket/lazarus.json +++ b/bucket/lazarus.json @@ -4,8 +4,12 @@ "homepage": "https://www.lazarus-ide.org", "license": { "identifier": "GPL-2.0-or-later | FPC-modified-LGPL-2.0-or-later", - "url": "http://wiki.lazarus.freepascal.org/licensing" + "url": "https://wiki.lazarus.freepascal.org/licensing" }, + "notes": [ + "To register file associations, please execute the following command:", + "reg import \"$dir\\install-associations.reg\"" + ], "architecture": { "64bit": { "url": "https://downloads.sourceforge.net/project/lazarus/Lazarus%20Windows%2064%20bits/Lazarus%204.6/lazarus-4.6-fpc-3.2.2-win64.exe", @@ -17,12 +21,31 @@ } }, "innosetup": true, + "installer": { + "script": [ + "$executable_dir = Get-ChildItem -Path \"$dir\\fpc\" -Filter 'fpcmkcfg.exe' -Depth 3 -File |", + " Select-Object -ExpandProperty DirectoryName -First 1", + "$fpc_dir = $executable_dir -replace '(?<=fpc.+)[\\\\/]bin.+', ''", + "$process_args = @('-d', \"basepath=$fpc_dir\", '-o', \"$executable_dir\\fpc.cfg\")", + "Start-Process -FilePath \"$executable_dir\\fpcmkcfg.exe\" -ArgumentList $process_args -NoNewWindow -Wait" + ] + }, "post_install": [ - "$fpcdir = \"$dir\\fpc\\\" + ($fname -replace '.*fpc-([\\d.]+)-.*', '$1');", - "$fpcarch=$(if ($fname -match '.*fpc-([\\d.]+)-win64') {'x86_64-win64'} else {'i386-win32'});", - "& \"$fpcdir\\bin\\$fpcarch\\fpcmkcfg.exe\" -d \"basepath=$fpcdir\" -o \"$fpcdir\\bin\\$fpcarch\\fpc.cfg\"" + "$lazarus_dir = $dir -replace '\\\\', '\\\\'", + "Get-ChildItem -Path \"$bucketsdir\\$bucket\\scripts\\$app\" -Filter '*.reg' -File | ForEach-Object -Process {", + " $content = Get-Content -Path $_.FullName -Encoding utf8", + " if ($global) { $content = $content -replace 'HKEY_CURRENT_USER(?=.+Classes)', 'HKEY_LOCAL_MACHINE' }", + " $content -replace '{{lazarus_dir}}', $lazarus_dir | Set-Content -Path \"$dir\\$($_.Name)\" -Encoding unicode", + "}" + ], + "env_set": { + "LazDir": "$dir", + "LazarusDir": "$dir" + }, + "bin": [ + "lazarus.exe", + "lazbuild.exe" ], - "bin": "lazbuild.exe", "shortcuts": [ [ "lazarus.exe", @@ -34,11 +57,19 @@ "--debug" ] ], - "env_set": { - "LazarusDir": "$dir", - "LazDir": "$dir" + "uninstaller": { + "script": [ + "if ($cmd -ne 'uninstall') { return }", + "Get-ChildItem -Path $dir -Filter 'un*.reg' -File | ForEach-Object -Process {", + " $registry_file = '\"{0}\"' -f $_.FullName", + " Start-Process -FilePath 'reg.exe' -ArgumentList @('import', $registry_file) -WindowStyle Hidden -Wait", + "}" + ] + }, + "checkver": { + "url": "https://www.lazarus-ide.org/index.php?page=downloads", + "regex": "lazarus-([\\d.]+)-fpc-(?[\\d.]+)-win" }, - "checkver": "lazarus-([\\d.]+)-fpc-(?[\\d.]+)-win(64|32)\\.exe", "autoupdate": { "architecture": { "64bit": { @@ -49,7 +80,7 @@ } }, "hash": { - "url": "http://www.lazarus-ide.org/index.php?page=checksums", + "url": "https://www.lazarus-ide.org/index.php?page=checksums", "regex": "$sha256.*?$basename" } } diff --git a/scripts/lazarus/install-associations.reg b/scripts/lazarus/install-associations.reg new file mode 100644 index 00000000000000..fceaa4d4ebdc66 --- /dev/null +++ b/scripts/lazarus/install-associations.reg @@ -0,0 +1,160 @@ +Windows Registry Editor Version 5.00 + +[HKEY_CURRENT_USER\Software\Classes\.inc\OpenWithProgIDs] +"Lazarus.AssocFile.inc"=hex(0): + + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.inc] +@="Object Pascal Include File" +"AppUserModelID"="Lazarus.Lazarus" +"FriendlyTypeName"="Object Pascal Include File" + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.inc\DefaultIcon] +@="{{lazarus_dir}}\\images\\includefile.ico" + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.inc\shell] + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.inc\shell\open] +"FriendlyAppName"="Lazarus" +"Icon"="{{lazarus_dir}}\\images\\includefile.ico" + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.inc\shell\open\command] +@="\"{{lazarus_dir}}\\lazarus.exe\" \"%1\"" + + + +[HKEY_CURRENT_USER\Software\Classes\.lfm\OpenWithProgIDs] +"Lazarus.AssocFile.lfm"=hex(0): + + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lfm] +@="Lazarus Form" +"AppUserModelID"="Lazarus.Lazarus" +"FriendlyTypeName"="Lazarus Form" + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lfm\DefaultIcon] +@="{{lazarus_dir}}\\images\\LazarusForm.ico" + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lfm\shell] + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lfm\shell\open] +"FriendlyAppName"="Lazarus" +"Icon"="{{lazarus_dir}}\\images\\LazarusForm.ico" + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lfm\shell\open\command] +@="\"{{lazarus_dir}}\\lazarus.exe\" \"%1\"" + + + +[HKEY_CURRENT_USER\Software\Classes\.lpi\OpenWithProgIDs] +"Lazarus.AssocFile.lpi"=hex(0): + + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lpi] +@="Lazarus Project Information" +"AppUserModelID"="Lazarus.Lazarus" +"FriendlyTypeName"="Lazarus Project Information" + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lpi\DefaultIcon] +@="{{lazarus_dir}}\\images\\mainiconproject.ico" + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lpi\shell] + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lpi\shell\open] +"FriendlyAppName"="Lazarus" +"Icon"="{{lazarus_dir}}\\images\\mainiconproject.ico" + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lpi\shell\open\command] +@="\"{{lazarus_dir}}\\lazarus.exe\" \"%1\"" + + + +[HKEY_CURRENT_USER\Software\Classes\.lpk\OpenWithProgIDs] +"Lazarus.AssocFile.lpk"=hex(0): + + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lpk] +@="Lazarus Package File" +"AppUserModelID"="Lazarus.Lazarus" +"FriendlyTypeName"="Lazarus Package File" + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lpk\DefaultIcon] +@="{{lazarus_dir}}\\images\\lazaruspackage.ico" + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lpk\shell] + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lpk\shell\open] +"FriendlyAppName"="Lazarus" +"Icon"="{{lazarus_dir}}\\images\\lazaruspackage.ico" + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lpk\shell\open\command] +@="\"{{lazarus_dir}}\\lazarus.exe\" \"%1\"" + + + +[HKEY_CURRENT_USER\Software\Classes\.lpr\OpenWithProgIDs] +"Lazarus.AssocFile.lpr"=hex(0): + + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lpr] +@="Lazarus Project Main Source" +"AppUserModelID"="Lazarus.Lazarus" +"FriendlyTypeName"="Lazarus Project Main Source" + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lpr\DefaultIcon] +@="{{lazarus_dir}}\\images\\lprfile.ico" + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lpr\shell] + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lpr\shell\open] +"FriendlyAppName"="Lazarus" +"Icon"="{{lazarus_dir}}\\images\\lprfile.ico" + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lpr\shell\open\command] +@="\"{{lazarus_dir}}\\lazarus.exe\" \"%1\"" + + + +[HKEY_CURRENT_USER\Software\Classes\.pas\OpenWithProgIDs] +"Lazarus.AssocFile.pas"=hex(0): + + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.pas] +@="Pascal Source Code" +"AppUserModelID"="Lazarus.Lazarus" +"FriendlyTypeName"="Pascal Source Code" + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.pas\DefaultIcon] +@="{{lazarus_dir}}\\images\\LazarusSource.ico" + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.pas\shell] + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.pas\shell\open] +"FriendlyAppName"="Lazarus" +"Icon"="{{lazarus_dir}}\\images\\LazarusSource.ico" + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.pas\shell\open\command] +@="\"{{lazarus_dir}}\\lazarus.exe\" \"%1\"" + + + +[HKEY_CURRENT_USER\Software\Classes\.pp\OpenWithProgIDs] +"Lazarus.AssocFile.pp"=hex(0): + + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.pp] +@="Pascal Source Code" +"AppUserModelID"="Lazarus.Lazarus" +"FriendlyTypeName"="Pascal Source Code" + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.pp\DefaultIcon] +@="{{lazarus_dir}}\\images\\LazarusSource.ico" + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.pp\shell] + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.pp\shell\open] +"FriendlyAppName"="Lazarus" +"Icon"="{{lazarus_dir}}\\images\\LazarusSource.ico" + +[HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.pp\shell\open\command] +@="\"{{lazarus_dir}}\\lazarus.exe\" \"%1\"" diff --git a/scripts/lazarus/uninstall-associations.reg b/scripts/lazarus/uninstall-associations.reg new file mode 100644 index 00000000000000..5ffcae4fcb034e --- /dev/null +++ b/scripts/lazarus/uninstall-associations.reg @@ -0,0 +1,52 @@ +Windows Registry Editor Version 5.00 + +; Remove application metadata and capabilities from the Default Programs framework + +[-HKEY_CURRENT_USER\Software\Lazarus] + +; Unregister Lazarus from the RegisteredApplications list to disable system-level integration + +[HKEY_CURRENT_USER\Software\RegisteredApplications] +"Lazarus"=- + + +[HKEY_CURRENT_USER\Software\Classes\.inc\OpenWithProgIDs] +"Lazarus.AssocFile.inc"=- + +[-HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.inc] + + +[HKEY_CURRENT_USER\Software\Classes\.lfm\OpenWithProgIDs] +"Lazarus.AssocFile.lfm"=- + +[-HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lfm] + + +[HKEY_CURRENT_USER\Software\Classes\.lpi\OpenWithProgIDs] +"Lazarus.AssocFile.lpi"=- + +[-HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lpi] + + +[HKEY_CURRENT_USER\Software\Classes\.lpk\OpenWithProgIDs] +"Lazarus.AssocFile.lpk"=- + +[-HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lpk] + + +[HKEY_CURRENT_USER\Software\Classes\.lpr\OpenWithProgIDs] +"Lazarus.AssocFile.lpr"=- + +[-HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.lpr] + + +[HKEY_CURRENT_USER\Software\Classes\.pas\OpenWithProgIDs] +"Lazarus.AssocFile.pas"=- + +[-HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.pas] + + +[HKEY_CURRENT_USER\Software\Classes\.pp\OpenWithProgIDs] +"Lazarus.AssocFile.pp"=- + +[-HKEY_CURRENT_USER\Software\Classes\Lazarus.AssocFile.pp]