From af04773497cad50baa509ad86d5fd44eac1d48c6 Mon Sep 17 00:00:00 2001 From: jklingen Date: Tue, 15 Jul 2025 12:38:22 +0200 Subject: [PATCH 1/6] Add workflow_dispatch Trigger to Build and Deploy Workflow --- .github/workflows/release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2ff412d91..06bc7342a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,6 +1,7 @@ name: Build and Deploy on: + workflow_dispatch: push: branches: - 'release/1.*' From 2121547387e8867ba4f379fc5f8a7f1bcdd45982 Mon Sep 17 00:00:00 2001 From: Thomas Braun Date: Wed, 16 Jul 2025 12:11:18 +0200 Subject: [PATCH 2/6] added PrivilegesRequiredOverridesAllowed=commandline --- installer/innosetup/setup.iss | 1 + 1 file changed, 1 insertion(+) diff --git a/installer/innosetup/setup.iss b/installer/innosetup/setup.iss index 428caa5c0..6bb0d0fe5 100644 --- a/installer/innosetup/setup.iss +++ b/installer/innosetup/setup.iss @@ -135,6 +135,7 @@ LanguageDetectionMethod=uilanguage MinVersion=6.1sp1 OutputDir=..\ PrivilegesRequired=lowest +PrivilegesRequiredOverridesAllowed=commandline SetupIconFile=..\..\src\Greenshot\icons\applicationIcon\icon.ico #if CertumThumbprint != "" OutputBaseFilename={#ExeName}-INSTALLER-{#Version}-UNSTABLE From dbfdfe9a05d19da557f8350e6de815df3774724e Mon Sep 17 00:00:00 2001 From: jklingen Date: Thu, 17 Jul 2025 17:40:11 +0200 Subject: [PATCH 3/6] Chore: Enhance Github Pages Rebuild Trigger with other release types ... to make sure the list on the website is always up to date, without manual interaction. --- .github/workflows/update-gh-pages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-gh-pages.yml b/.github/workflows/update-gh-pages.yml index 5026ffb18..ba45b70d1 100644 --- a/.github/workflows/update-gh-pages.yml +++ b/.github/workflows/update-gh-pages.yml @@ -3,7 +3,7 @@ name: Update GitHub Pages on: workflow_dispatch: release: - types: [published] + types: [published, unpublished, created, edited, deleted, prereleased, released] jobs: update-gh-pages: From aa98a7ce789d1beaf486f40c845c0fe62cd8d27d Mon Sep 17 00:00:00 2001 From: jklingen Date: Fri, 18 Jul 2025 11:24:21 +0200 Subject: [PATCH 4/6] Add Trademark and Logo Usage Policy --- README.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 90fff9b6f..a3e9696c7 100644 --- a/README.md +++ b/README.md @@ -21,10 +21,25 @@ Being easy to understand and configurable, Greenshot is an efficient tool for pr About this repository --------------------- -This repository is for Greenshot 1.3, currently in development, but is the next planned release +This is the development branch is for Greenshot 1.3, which has been first released on 2025-07-14. Releases -------- You can find a list of all releases (stable and unstable) in the [Github releases](https://github.com/greenshot/greenshot/releases) or in the [version history on our website](https://getgreenshot.org/version-history/). The [downloads page on our website](https://getgreenshot.org/downloads/) always links to the latest stable release. + +Trademark and Logo Usage Policy +------------------------------- + +The Greenshot logo and trademark are the property of the Greenshot development team. Unauthorized use of the logo and trademark is generally prohibited. However, we allow the use of the Greenshot name and logo in the following contexts: + +* In blog posts, articles, or reviews that discuss or promote the Greenshot, provided that the usage is fair and does not imply endorsement by Greenshot. +* In educational materials or presentations that accurately represent the project. + +Please refrain from using the Greenshot logo and trademark in any promotional materials, products, or in a manner that may cause confusion or imply endorsement without prior written permission. + +If you have any questions or wish to seek permission for other uses, please contact us. + +Thank you for your understanding and cooperation. + From 7360791872538a0e3d15ec8d058b9b875107dfce Mon Sep 17 00:00:00 2001 From: jklingen Date: Thu, 24 Jul 2025 18:04:11 +0200 Subject: [PATCH 5/6] Add Possibility to Publish Test Releases from Branches (#631) ... without causing a mess and a lot of confusion by using the same build numbers as in release branch. --- .github/workflows/release.yml | 48 ++++++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 06bc7342a..9a92223ed 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,3 +1,7 @@ +env: + IS_RELEASE_BRANCH: ${{ startsWith(github.ref, 'refs/heads/release/') }} + BRANCH_NAME: ${{ github.ref_name }} + name: Build and Deploy on: @@ -5,6 +9,12 @@ on: push: branches: - 'release/1.*' + paths-ignore: + - '.github/**' + - '.gitignore' + - '*.md' + - 'LICENSE' + - 'build-and-deploy.ps1' jobs: build: @@ -85,7 +95,8 @@ jobs: path: drop # Local folder where artifacts are downloaded - name: Extract version from file name - id: extract_version + if: env.IS_RELEASE_BRANCH == 'true' + id: version_from_filename run: | $file = Get-ChildItem drop -Filter "Greenshot-INSTALLER-*.exe" | Select-Object -First 1 if (-not $file) { @@ -97,22 +108,47 @@ jobs: throw "Version number could not be extracted from file name: $($file.Name)" } shell: pwsh + + - name: Set version from sanitized branch name + if: env.IS_RELEASE_BRANCH != 'true' + id: version_from_branchname + run: | + $branch = "${{ github.ref }}" -replace '^refs/heads/', '' + $sanitized = $branch -replace '[^a-zA-Z0-9._-]', '_' + echo "version=$sanitized" >> $Env:GITHUB_OUTPUT + shell: pwsh + + - name: Set version info + id: version_info + run: | + echo "version=${{ steps.version_from_filename.outputs.version || steps.version_from_branchname.outputs.version }}" >> $GITHUB_OUTPUT + shell: bash + - name: Create tag + if: env.IS_RELEASE_BRANCH == 'true' run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" - git tag -a "v${{ steps.extract_version.outputs.version }}" -m "v${{ steps.extract_version.outputs.version }}" - git push origin "v${{ steps.extract_version.outputs.version }}" + git tag -a "v${{ steps.version_info.outputs.version }}" -m "v${{ steps.version_info.outputs.version }}" + git push origin "v${{ steps.version_info.outputs.version }}" + + - name: Rename installer for non-release branch + if: env.IS_RELEASE_BRANCH != 'true' + run: | + branch="${BRANCH_NAME:-${GITHUB_REF#refs/heads/}}" + sanitized=$(echo "$branch" | sed 's/[^a-zA-Z0-9._-]/_/g') + mv drop/Greenshot-INSTALLER-*.exe "drop/Greenshot-INSTALLER-${sanitized}.exe" + shell: bash - name: Create GitHub Release uses: softprops/action-gh-release@v2 with: - name: "Greenshot ${{ steps.extract_version.outputs.version }} (continuous build)" - tag_name: "v${{ steps.extract_version.outputs.version }}" + name: "Greenshot ${{ steps.version_info.outputs.version }} (continuous build)" + tag_name: ${{ env.IS_RELEASE_BRANCH == 'true' && format('v{0}', steps.version_info.outputs.version) || env.BRANCH_NAME }} files: drop/*.exe generate_release_notes: true - draft: false + draft: ${{ env.IS_RELEASE_BRANCH != 'true' }} prerelease: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From dbbfbb654e7f3640d3fe66459f75d7f8988fe170 Mon Sep 17 00:00:00 2001 From: jklingen Date: Sat, 26 Jul 2025 16:17:08 +0200 Subject: [PATCH 6/6] Installer: Allow Choice between All-Users (Administrative) and Current-User Installation #625 (#641) Also fixes #546, #611, #598 --- installer/innosetup/setup.iss | 45 ++++++++++------------------------- 1 file changed, 13 insertions(+), 32 deletions(-) diff --git a/installer/innosetup/setup.iss b/installer/innosetup/setup.iss index 6bb0d0fe5..fa358ee7b 100644 --- a/installer/innosetup/setup.iss +++ b/installer/innosetup/setup.iss @@ -127,15 +127,19 @@ AppVersion={#Version} ArchitecturesInstallIn64BitMode=x64 Compression=lzma2/ultra64 SolidCompression=yes -DefaultDirName={code:DefDirRoot}\{#ExeName} +DefaultDirName={autopf}\{#ExeName} DefaultGroupName={#ExeName} InfoBeforeFile=..\additional_files\readme.txt LicenseFile=..\additional_files\license.txt LanguageDetectionMethod=uilanguage MinVersion=6.1sp1 OutputDir=..\ +; user may choose between all-users vs. current-user installation in a dialog or by using the /ALLUSERS flag (on the command line) +; in registry section, HKA will take care of the appropriate root key (HKLM vs. HKCU), see https://jrsoftware.org/ishelp/index.php?topic=admininstallmode +PrivilegesRequiredOverridesAllowed=dialog +; admin privileges not required, unless user chooses all-users installation +; the installer will ask for elevation if needed PrivilegesRequired=lowest -PrivilegesRequiredOverridesAllowed=commandline SetupIconFile=..\..\src\Greenshot\icons\applicationIcon\icon.ico #if CertumThumbprint != "" OutputBaseFilename={#ExeName}-INSTALLER-{#Version}-UNSTABLE @@ -155,6 +159,7 @@ VersionInfoVersion={#Version} WizardImageFile=installer-large.bmp ; Reference a bitmap, max size 55x58 WizardSmallImageFile=installer-small.bmp + [Registry] ; Delete all startup entries, so we don't have leftover values Root: HKCU; Subkey: Software\Microsoft\Windows\CurrentVersion\Run; ValueType: none; ValueName: {#ExeName}; Flags: deletevalue noerror; @@ -173,24 +178,16 @@ Root: HKLM; Subkey: Software\Classes\.greenshot; ValueType: none; ValueName: {#E Root: HKLM; Subkey: Software\Classes\Greenshot; ValueType: none; ValueName: {#ExeName}; Flags: deletevalue noerror; ; Create the startup entries if requested to do so -; HKEY_LOCAL_USER - for current user only -Root: HKCU; Subkey: Software\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: {#ExeName}; ValueData: """{app}\{#ExeName}.exe"""; Permissions: users-modify; Flags: uninsdeletevalue noerror; Tasks: startup; Check: IsRegularUser -; HKEY_LOCAL_MACHINE - for all users when admin -Root: HKLM; Subkey: Software\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: {#ExeName}; ValueData: """{app}\{#ExeName}.exe"""; Permissions: admins-modify; Flags: uninsdeletevalue noerror; Tasks: startup; Check: not IsRegularUser +Root: HKA; Subkey: Software\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: {#ExeName}; ValueData: """{app}\{#ExeName}.exe"""; Flags: uninsdeletevalue noerror; Tasks: startup ; Register our own filetype for all users -; HKEY_LOCAL_USER - for current user only -Root: HKCU; Subkey: Software\Classes\.greenshot; ValueType: string; ValueName: ""; ValueData: "Greenshot"; Permissions: users-modify; Flags: uninsdeletevalue noerror; Check: IsRegularUser -Root: HKCU; Subkey: Software\Classes\Greenshot; ValueType: string; ValueName: ""; ValueData: "Greenshot File"; Permissions: users-modify; Flags: uninsdeletevalue noerror; Check: IsRegularUser -Root: HKCU; Subkey: Software\Classes\Greenshot\DefaultIcon; ValueType: string; ValueName: ""; ValueData: """{app}\Greenshot.EXE,0"""; Permissions: users-modify; Flags: uninsdeletevalue noerror; Check: IsRegularUser -Root: HKCU; Subkey: Software\Classes\Greenshot\shell\open\command; ValueType: string; ValueName: ""; ValueData: """{app}\Greenshot.EXE"" --openfile ""%1"""; Permissions: users-modify; Flags: uninsdeletevalue noerror; Check: IsRegularUser +Root: HKA; Subkey: Software\Classes\.greenshot; ValueType: string; ValueName: ""; ValueData: "Greenshot"; Flags: uninsdeletevalue noerror +Root: HKA; Subkey: Software\Classes\Greenshot; ValueType: string; ValueName: ""; ValueData: "Greenshot File"; Flags: uninsdeletevalue noerror +Root: HKA; Subkey: Software\Classes\Greenshot\DefaultIcon; ValueType: string; ValueName: ""; ValueData: """{app}\Greenshot.EXE,0"""; Flags: uninsdeletevalue noerror +Root: HKA; Subkey: Software\Classes\Greenshot\shell\open\command; ValueType: string; ValueName: ""; ValueData: """{app}\Greenshot.EXE"" --openfile ""%1"""; Flags: uninsdeletevalue noerror + ; Disable the default PRTSCR Snipping Tool in Windows 11 Root: HKCU; Subkey: Control Panel\Keyboard; ValueType: dword; ValueName: "PrintScreenKeyForSnippingEnabled"; ValueData: "0"; Flags: uninsdeletevalue; Check: ShouldDisableSnippingTool -; HKEY_LOCAL_MACHINE - for all users when admin -Root: HKLM; Subkey: Software\Classes\.greenshot; ValueType: string; ValueName: ""; ValueData: "Greenshot"; Permissions: admins-modify; Flags: uninsdeletevalue noerror; Check: not IsRegularUser -Root: HKLM; Subkey: Software\Classes\Greenshot; ValueType: string; ValueName: ""; ValueData: "Greenshot File"; Permissions: admins-modify; Flags: uninsdeletevalue noerror; Check: not IsRegularUser -Root: HKLM; Subkey: Software\Classes\Greenshot\DefaultIcon; ValueType: string; ValueName: ""; ValueData: """{app}\Greenshot.EXE,0"""; Permissions: admins-modify; Flags: uninsdeletevalue noerror; Check: not IsRegularUser -Root: HKLM; Subkey: Software\Classes\Greenshot\shell\open\command; ValueType: string; ValueName: ""; ValueData: """{app}\Greenshot.EXE"" --openfile ""%1"""; Permissions: admins-modify; Flags: uninsdeletevalue noerror; Check: not IsRegularUser [Icons] Name: {group}\{#ExeName}; Filename: {app}\{#ExeName}.exe; WorkingDir: {app}; AppUserModelID: "{#ExeName}" @@ -541,22 +538,6 @@ Name: "languages\zhCN"; Description: {cm:zhCN}; Types: full custom; Flags: disab Name: "languages\zhTW"; Description: {cm:zhTW}; Types: full custom; Flags: disablenouninstallwarning; Check: hasLanguageGroup('9') [Code] -// Do we have a regular user trying to install this? -function IsRegularUser(): Boolean; -begin - Result := not (IsAdmin or IsAdminInstallMode); -end; - -// The following code is used to select the installation path, this is localappdata if non poweruser -function DefDirRoot(Param: String): String; -begin - if IsRegularUser then - Result := ExpandConstant('{localappdata}') - else - Result := ExpandConstant('{pf}') -end; - - function FullInstall(Param : String) : String; begin result := SetupMessage(msgFullInstallation);