Skip to content

Conversation

@filipelautert
Copy link
Collaborator

@filipelautert filipelautert commented Oct 6, 2025

Summary

Implements DAT-20553 to improve the Windows installer user experience when a previous Liquibase installation is detected.

Changes

  • Add detection message and radio button options to the welcome screen when previous installation is found
  • Provide two options: install to new directory or update existing installation
  • Automatically suggest versioned directory path (Liquibase-) for new installations
  • Skip directory selection when user chooses to update existing installation
  • Preserve existing update-in-place behavior using UninstallPreviousAction

Files Modified

  • liquibase-dist/src/main/install4j/liquibase.install4j - Added UI components and installation flow logic
  • liquibase-dist/src/main/install4j/messages.properties - Added new message strings

Testing

Requires building the Windows installer with Install4J and testing on Windows with a previous Liquibase installation.

Jira

DAT-20553

filipelautert and others added 30 commits July 11, 2025 17:01
…roject (#7109)

* chore: remove liquibase-commercial references and dependencies from project and build files; clean up unused files and licenses, remove build-azure-uber-jar workflow

* chore: remove unused pro build and test workflow from build configuration

* fix: remove snapshot configuration from multiple YAML files

* chore: restore minimal assembly configuration and update build workflows

* chore: add zip format back

* chore: remove minimal zip

* fix: update license service checks to avoid warning messages when not loaded

* fix: update test matrix to exclude non-java 21 builds on macOS and Windows
* chore: remove liquibase-commercial references and dependencies from project and build files; clean up unused files and licenses, remove build-azure-uber-jar workflow

* chore: remove unused pro build and test workflow from build configuration

* fix: remove snapshot configuration from multiple YAML files

* chore: restore minimal assembly configuration and update build workflows

* chore: add zip format back

* chore: remove minimal zip

* fix: update license service checks to avoid warning messages when not loaded

* fix: update test matrix to exclude non-java 21 builds on macOS and Windows

* chore: remove database drivers from distribution; remove unused license files from archives
# Conflicts:
#	.github/workflows/build-azure-uber-jar.yml
#	.github/workflows/build-extension-jars.yml
#	.github/workflows/build.yml
#	.github/workflows/create-release.yml
#	.github/workflows/fossa.yml
#	.github/workflows/release-published.yml
#	.github/workflows/run-functional-tests.yml
#	.github/workflows/run-pro-build-and-test.yml
#	liquibase-dist/pom.xml
#	pom.xml
* chore[DAT-20370]: Remove bigquery and checks from build.

* chore: remove liquibase-commercial references and dependencies from project (#7109)

* chore: remove liquibase-commercial references and dependencies from project and build files; clean up unused files and licenses, remove build-azure-uber-jar workflow

* chore: remove unused pro build and test workflow from build configuration

* fix: remove snapshot configuration from multiple YAML files

* chore: restore minimal assembly configuration and update build workflows

* chore: add zip format back

* chore: remove minimal zip

* fix: update license service checks to avoid warning messages when not loaded

* fix: update test matrix to exclude non-java 21 builds on macOS and Windows

* chore: remove database drivers from distribution (#7110)

* chore: remove liquibase-commercial references and dependencies from project and build files; clean up unused files and licenses, remove build-azure-uber-jar workflow

* chore: remove unused pro build and test workflow from build configuration

* fix: remove snapshot configuration from multiple YAML files

* chore: restore minimal assembly configuration and update build workflows

* chore: add zip format back

* chore: remove minimal zip

* fix: update license service checks to avoid warning messages when not loaded

* fix: update test matrix to exclude non-java 21 builds on macOS and Windows

* chore: remove database drivers from distribution; remove unused license files from archives

* Fix missing directory + jdk setup order

* fix incorrect merge

* feat: add back AWS credentials configuration and secret retrieval to release workflows

* feat: update GPG key handling in release workflow

* feat: enhance installation screen with elevated action and uninstall previous action
* refactor: remove all pro code from Liquibase maven plugin .

* Removed properties:
reportsEnabled - appears in all goals,

rollbackOnError - in update, updateSQL, updateTestingRollback goals,

parameters starting with psql* (psqlArgs, psqlKeepTemp, psqlKeepTempName, psqlKeepTempPath, psqlLogFile, psqlPath, psqlTimeout) - in all goals,

sqlPlus* (sqlPlusArgs, sqlPlusKeepTemp, sqlPlusKeepTempName, sqlPlusKeepTempOverwrite, sqlPlusKeepTempPath, sqlPlusLogFile, sqlPlusPath, sqlPlusTimeout) - in all goals,

sqlcmd* (sqlcmdArgs, sqlcmdCatalogName, sqlcmdKeepTemp, sqlcmdKeepTempName, sqlcmdKeepTempOverwrite, sqlcmdKeepTempPath, sqlcmdLogFile, sqlcmdPath, sqlcmdTimeout) - in all goals.
…OSS (#7174)

* refactor: clean up documentation and remove  flow file references for OSS

* feat: improve example file handling and logging in InitProjectUtil
# Conflicts:
#	liquibase-dist/pom.xml
#	liquibase-dist/src/main/archive/licenses/commercial/README.txt
#	liquibase-dist/src/main/assembly/component-additional-deps.xml
# Conflicts:
#	.github/workflows/create-release.yml
#	liquibase-dist/pom.xml
# Conflicts:
#	.github/workflows/build-azure-uber-jar.yml
#	.github/workflows/build-extension-jars.yml
#	.github/workflows/build.yml
#	.github/workflows/create-release.yml
#	.github/workflows/release-published.yml
#	.github/workflows/run-functional-tests.yml
#	.github/workflows/run-pro-build-and-test.yml
# Conflicts:
#	.github/workflows/build-azure-uber-jar.yml
#	.github/workflows/build-extension-jars.yml
#	.github/workflows/build.yml
#	.github/workflows/create-release.yml
#	liquibase-dist/pom.xml
…bution text files (#7218)

* DAT-20635: Update "Liquibase Pro" to "Liquibase Secure" in OSS distribution text files

Updated support upsell text in README.txt, UNINSTALL.txt, and GETTING_STARTED.txt
to reference "Liquibase Secure" instead of "Liquibase Pro" as part of the
Liquibase 5.0 OSS distribution requirements.

* Update references from "Liquibase Pro" to "Liquibase License Key" across text files and codebase

* Update parameter casting in `ZipResourceAccessor` and improve description formatting in CLI test
# Conflicts:
#	.github/workflows/build-azure-uber-jar.yml
#	.github/workflows/build-extension-jars.yml
#	.github/workflows/build.yml
#	.github/workflows/create-release.yml
#	.github/workflows/release-published.yml
#	.github/workflows/run-functional-tests.yml
#	.github/workflows/run-pro-build-and-test.yml
#	.github/workflows/run-tests.yml
#	liquibase-dist/pom.xml
#	liquibase-standard/src/main/java/liquibase/resource/ZipResourceAccessor.java
# Conflicts:
#	.github/workflows/build.yml
#	.github/workflows/run-functional-tests.yml
#	.github/workflows/run-pro-build-and-test.yml
…nvalid license messages (#7253)

- Replace "Liquibase Pro" with "Liquibase Secure" in error messages.
- Add `END_INVALID_LICENSE_MESSAGE` for detailed licensing instructions.
# Conflicts:
#	liquibase-dist/pom.xml
* Update Community distribution documentation and licenses

- Standardized example project directory structures and descriptions.
- Highlighted modular nature of Liquibase Community 5.0 and introduced Liquibase Package Manager (LPM) in documentation.
- Added Functional Source License (FSL-1.1-ALv2) for OSS components.
- Updated copyright notices and adjusted license documentation accordingly.
- Clarified H2 database and AdoptOpenJDK usage details.

* Update Community distribution documentation placeholders

- Replaced static version and year with `${project.version}` and `${current.year}` placeholders in GETTING_STARTED.TXT, README.txt, and license files.
- Updated product support reference to "Liquibase Secure".
)

Changed copyright notices from single year to range format starting from
2007 when the project began. Updated GETTING_STARTED.TXT, README.txt,
and FSL-1.1-ALv2.txt to reflect continuous development since project inception.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Claude <noreply@anthropic.com>
filipelautert and others added 21 commits September 24, 2025 07:59
* Fix OSS license validation to prevent NPEs and silent failures

Addresses DAT-20812, DAT-20561, DAT-20559 where OSS distribution was
returning null LicenseService, causing Pro features to either crash
with NPEs or fail silently instead of showing proper license errors.

Changes:
- Add OSSLicenseService: no-op implementation for OSS builds
- Fix incomplete LicenseServiceUtils.java line 19
- Register service in META-INF/services for ServiceLocator discovery
- Add comprehensive tests validating the fix

Pro features (tagDatabase, diff --format=json, includeAll) now
consistently show user-friendly license validation errors instead
of crashing or failing silently in OSS distributions.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Remove `LicenseServiceFixDemonstrationTest` to clean up obsolete test scenarios

This integration test validated fixes from DAT-20812, DAT-20561, and DAT-20559, but is no longer needed as the functionality is now covered by updated license validation in OSS.

* Add utility class for OSS-prohibited SQL pattern handling and refine OSS license messaging

- Introduced `InvalidFormattedSqlPatternsForOssUtil` to manage prohibited SQL patterns in OSS builds, including user-friendly warnings for unsupported commands like `rollbackSqlFile`, `tagDatabase`, `include`, and `includeAll`.
- Updated `OSSLicenseService` to return an empty string for `getLicenseInfo()` instead of default OSS messaging.

* Add warning for unsupported Pro commands in OSS and remove obsolete OSS license test comments

- Integrated `InvalidFormattedSqlPatternsForOssUtil` to log warnings when unsupported Pro commands are used in OSS distributions.
- Removed outdated assertions from `OSSLicenseServiceTest`, aligning with recent license info changes.

* Raise exceptions for unsupported Pro commands in OSS without valid licenses

- Replaced warnings with exceptions for unsupported commands (`rollbackSqlFile`, `tagDatabase`, `include`, `includeAll`) in `InvalidFormattedSqlPatternsForOssUtil`.
- Updated messaging to provide clear license requirement details.

* Add exceptions for unsupported Pro commands without valid licenses in OSS

- Introduced case-insensitive and whitespace-tolerant validation for unsupported Pro commands (`rollbackSqlFile`, `tagDatabase`, `include`, `includeAll`) in `InvalidFormattedSqlPatternsForOssUtil`.
- Added comprehensive tests to verify exceptions and error messages for prohibited commands.
- Ensured regular comments and SQL content with Pro patterns do not trigger exceptions.

* Enforce Pro license validation for JSON diff output formats

- Added exception for `--format=JSON|JSON_PRETTY` when used without a valid Liquibase Pro license.
- Updated error message to include trial license information.

* Update error message for JSON diff output license validation

- Revised exception message for `--format=JSON|JSON_PRETTY` to reference a general Liquibase license key instead of Pro license.
- Updated trial link to ensure clarity.

---------

Co-authored-by: Claude <noreply@anthropic.com>
# Conflicts:
#	.github/workflows/release-published.yml
#	liquibase-dist/pom.xml
#	liquibase-maven-plugin/src/main/java/org/liquibase/maven/plugins/AbstractLiquibaseMojo.java
…7298)

* Remove 'Pro' from license references

Update license messaging throughout codebase to use 'Liquibase license'
instead of 'Liquibase Pro license' and 'License key' instead of 'Pro License key'.
This simplifies terminology and improves consistency across documentation,
error messages, and code comments.

* Update log message for missing Liquibase license key

* Improve Pro command error messaging for OSS users

Add clear licensing guidance when OSS users attempt to run Pro-only commands
instead of generic "Unexpected argument" errors.

Changes:
- Create ProCommandsRegistry with comprehensive list of Pro commands/subcommands
- Add specific error messages for Pro features in liquibase-core.properties
- Update LiquibaseCommandLine to detect Pro commands and show license guidance
- Add comprehensive unit and integration tests
- Maintain backward compatibility for OSS commands and invalid arguments

Before: "Unexpected argument(s): flow"
After: "Error parsing command line: Using 'flow' requires a valid Liquibase license key. Get a free Liquibase license key and trial at https://liquibase.com/trial."

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove failing test

* Remove obsolete Checks Extension validation logic

- Deleted outdated validation logic requiring the Liquibase Checks Extension 2.0.0 or higher for `checks` commands.
- Removed `CHECKS_MESSAGE` constant and associated references.

---------

Co-authored-by: Claude <noreply@anthropic.com>
* Updated changelog.txt

* Removed icons from the changelog.txt
# Conflicts:
#	liquibase-dist/pom.xml
#	pom.xml
The README.txt in liquibase-dist/src/main/archive/licenses/oss/ was rewritten to clarify that it applies to Liquibase Community and now includes detailed descriptions and copyright information for each third-party library, grouped by license type. It also explains compliance with the GPL Classpath Exception and provides links to relevant source code repositories.
feat: enhance release workflow with AWS credentials configuration and secret retrieval
* Updates to licenses

* Updates to licenses
Exit with error code after running Liquibase
Updated version number from 5.0.0 to 5.0.1 in changelog.
- Add detection message and radio button options to welcome screen when previous installation is found
- Provide two options: install to new directory or update existing installation
- Automatically suggest versioned directory path (Liquibase-<version>) for new installations
- Skip directory selection when user chooses to update existing installation
- Preserve existing update-in-place behavior using UninstallPreviousAction

Fixes DAT-20553

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@CLAassistant
Copy link

CLAassistant commented Oct 6, 2025

CLA assistant check
All committers have signed the CLA.

@filipelautert filipelautert changed the base branch from master to release October 6, 2025 21:42
- Simplify update/installation choice UI by switching to a single checkbox
- Update variable names and scripts for consistency with new checkbox logic
- Retain behavior for suggesting versioned directory path for new installations
@github-actions
Copy link
Contributor

github-actions bot commented Oct 9, 2025

Label error: This PR is being prevented from merging because you have not added one of the labels: APIBreakingChanges, breakingChanges, newContributors, notableChanges, sdou, skipReleaseNotes, TypeBug, TypeEnhancement, TypeTest. You'll need to add it before this PR can be merged.

Base automatically changed from release to master October 10, 2025 20:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants