Commit Graph

47 Commits

Author SHA1 Message Date
ispyisail df442c81e3 Fix register_filetypes.bat for the portable ZIP and for non-admin users
The Windows portable ZIP ships "Lancer QET_qt6.bat", but the script only
looked for "Lancer QET.bat", so it stopped at its first check and never
registered anything. It now tries the ZIP's name first and falls back to
the installer's.

It also wrote to HKEY_CLASSES_ROOT, which a standard (non-admin) Windows
account cannot create keys in. It now writes to
HKEY_CURRENT_USER\Software\Classes: per-user, no elevation needed, and
Windows merges it into HKEY_CLASSES_ROOT for that user.

qet_uninstall_file_associations.reg removes the HKCU keys first, then the
old HKEY_CLASSES_ROOT ones as before.

Tested under Wine 10 on the git10275 nightly ZIP: the old script aborts
("Lancer QET.bat ... n'a pas ete trouve"), the new one registers .qet,
.elmt and .titleblock under HKCU with nothing under HKLM, the uninstall
file removes them, and the "Lancer QET.bat" fallback works. Wine does not
enforce admin rights, so the non-admin case itself is not proven there.

Reported in #1148.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 22:00:06 +13:00
ispyisail 6b9c5189b1 Offer Python with the Windows installer, for the MCP server
Most Windows users have no Python, which the MCP server needs. The
installer now offers "Python for the AI assistant", unticked by default:
the official embeddable package from python.org (3.14.7, ~12 MB, no
registry, removed with QElectroTech), in <folder>\mcp\python. The
portable folder and the MSI, which pack all of files/, carry it.

The workflow downloads it pinned by version and by python.org's own
sha256 for the file (checked against python.org's download API), and
fails the build on a mismatch. The script stays plain text beside it.

Checked under Wine (64-bit, qet-wine-smoke image), on an installer built
with makensis 3.10 (0 warnings, strings in all 29 languages):
- a silent default install puts mcp\qet_mcp.py in place and no Python;
  the same installer with the section ticked by default installs it, so
  the check tells the two apart;
- the installed Python runs the installed server: 15 tools listed,
  qet_project_info on an example answers as on Linux, and the server
  finds bin\QElectroTech.exe and elements\ by itself.
Not checked: a real Windows machine; the CI download step (fork run).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 13:00:30 +13:00
ispyisail ac952d3df6 Install the MCP server with QElectroTech
The MCP server (misc/qet-mcp) was only reachable from a source checkout.
It now ships with every package, next to the program, and finds that
QElectroTech and its element collection from where it sits:

- make install (Linux distributions, snap, flatpak):
  <prefix>/share/qelectrotech/mcp/qet_mcp.py, executable, with its README.
- Windows installer: a new "AI assistant (MCP)" component (on by default,
  ~200 KB), installed to <folder>\mcp. The workflow stages files/mcp, so
  the portable folder and the MSI, which packs all of files/, carry it too.

The server learns the Windows layout (<root>/mcp beside <root>/bin, whose
program is QElectroTech.exe, and <root>/elements), in addition to
<prefix>/share/qelectrotech/mcp. A copy saved anywhere else, even beside
some bin/ folder, is not taken for an installation.

The installer strings are given in all 29 installer languages: French
translated, the others in English until translated, which is what NSIS
would fall back to anyway but without its warning 6040 per language.

Checked: make install into a scratch prefix, then from the installed
script with nothing configured and no qelectrotech on PATH, an SVG export
and a qet_edit placing a common:// element both succeeded. makensis 3.10
compiles the installer with 0 warnings before and after (removing the
French description gives warning 6040), and the installer contains
mcp/qet_mcp.py. Suite 274/274 none skipped; each layout check was
removed in turn and a test failed. Snap/flatpak: installed by the same
CMake rule; launching their QElectroTech from outside is untested.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 12:55:10 +13:00
Andre Rummler c14d6a6dd6 In order to migrate to Qt6 all options for KF6 were added:
a) using a system provided KF6
b) downloading and compiling KF6
c) using the vendored-in re-creation of the functionality

The behaviour for both Qt5 and Qt6 is steered with the same two variables which were renamed to become version agnostic:
a) BUILD_WITH_KF=ON BUILD_KF=OFF
b) BUILD_WITH_KF=ON BUILD_KF=ON
c) BUILD_WITH_KF=OFF

The version is automatically derived from the chosen Qt major version.
2026-08-12 12:29:56 +02:00
ispyisail 69c595fdb8 Windows installer: pass the data directories to the .qet file association
The MSI registers both shortcuts with the arguments QET needs to find its
data ("Point directly to qelectrotech.exe with all required arguments"),
but the QElectroTech.Document\shell\open\command registry value was
written without them:

    "[INSTALLDIR]bin\qelectrotech.exe" "%1"

Launching from the Start Menu therefore works, while double-clicking a
.qet file does not: Explorer sets the working directory to the document's
folder, and the compiled-in data paths are relative, so nothing is found
there. The most visible symptom is the interface always coming up in
French, because no translation loads and the source strings are French.

Give the file association the same arguments as the shortcuts.

Reported by mr-rfh in #554, who diagnosed it and arrived at exactly this
registry value by hand.
2026-07-26 22:41:44 +12:00
Laurent Trinques 8e736c59ba New Windows Qt5/Qt6 CI test, enable -platform windows:fontengine=freetype 2026-07-19 18:55:26 +02:00
Laurent Trinques fc948ad963 QElectroTech.wxs — add ProductCode="$(var.ProductCode)" to <Package>
+ AllowSameVersionUpgrades="yes" to <MajorUpgrade>
windows-msi.yml — in the ‘Extract version’ step, calculate a unique GUID
based on the commit’s SHA, then pass -d ‘ProductCode=$productGuid’ to the WIX build
This ensures that each build will have a different ProductCode → MajorUpgrade will always be triggered
2026-05-21 14:10:17 +02:00
Laurent Trinques 24d075b64c msi: add The AllowSameVersionUpgrades="yes" setting forces uninstallation
even when the MSI version is identical (which is the case here, as 0.100.1.0
remains unchanged between two nightly builds).
2026-05-21 13:59:53 +02:00
Laurent Trinques 96b8e4b19c fix(msi): move Custom element conditions to Condition attribute (WIX0400)
WiX v7 requires conditions to be set via the Condition attribute,
not as inner text of the Custom element.
2026-05-21 03:00:49 +02:00
Laurent Trinques 9760288db6 fix(msi): correct CustomAction pattern for elements\ read-only
- Use SetProperty + WixQuietExec two-step pattern to pass runtime
  INSTALLDIR to a deferred CustomAction (fixes WIX1077 and WIX0400)
- Add WixToolset.Util.wixext/7.0.0 extension (required for WixQuietExec)
- Fix condition syntax: collapse multi-line conditions to single line
- Add -ext WixToolset.Util.wixext to wix build command in windows-msi.yml
2026-05-21 02:55:28 +02:00
Laurent Trinques eeaa059a77 This PR improves the MSI installer by removing the Lancer QET.bat wrapper and handling everything natively in QElectroTech.wxs.
**`build-aux/windows/QElectroTech.wxs`**
- Desktop and Start Menu shortcuts now point directly to `bin\qelectrotech.exe` with all required arguments (`--common-elements-dir`, `--common-tbt-dir`, `--lang-dir`, `-style windowsvista`) — no `.bat` wrapper needed
- Added a deferred `CustomAction` that runs after `InstallFiles` and recursively sets all files in `elements\` to read-only using an inline PowerShell command

**`.github/workflows/windows-msi.yml`**
- Replaced the step that created `Lancer QET.bat` with a step that removes it from the artifact before the WiX build, so it is not embedded in the MSI
- The `.bat` file remains untouched in the ZIP portable build (managed by `windows-build.yml`)

- No console window flashing when launching QElectroTech from the MSI shortcuts
- The `elements\` directory is properly set to read-only after installation, as required
- Cleaner MSI package — no `.bat` file shipped to end users installing via MSI
2026-05-21 02:34:38 +02:00
Laurent Trinques 76d311cb35 Move build-aux/windows/generate-page.py -> build-aux/generate-page.py 2026-05-13 01:23:18 +02:00
Laurent Trinques 526e39e909 Add files via upload 2026-05-13 01:05:31 +02:00
Laurent Trinques 8e327448cc Update QElectroTech.wxs 2026-05-12 23:01:54 +02:00
Laurent Trinques 7a8cee0ce6 Update QElectroTech.wxs 2026-05-12 22:58:00 +02:00
Laurent Trinques e542a05d3f Update QElectroTech.wxs 2026-05-12 22:53:33 +02:00
Laurent Trinques 48fec1db98 Update QElectroTech.wxs 2026-05-12 22:30:23 +02:00
Laurent Trinques 31f946426b Update QElectroTech.wxs 2026-05-12 22:18:58 +02:00
Laurent Trinques efa74dd0f5 Update QElectroTech.wxs 2026-05-12 22:12:42 +02:00
Laurent Trinques 703797bb97 Update QElectroTech.wxs 2026-05-12 22:08:24 +02:00
Laurent Trinques 15e623ac5f Update QElectroTech.wxs 2026-05-12 21:58:07 +02:00
Laurent Trinques 55ae3fc3c6 Update QElectroTech.wxs 2026-05-12 21:46:11 +02:00
Laurent Trinques 9e0ec69c61 Add windows spec files for msi test 2026-05-12 19:49:34 +02:00
Laurent Trinques ae3e01e564 Update windows CI/CD pipeline
Windows Build / build-windows (push) Has been cancelled
2026-05-10 09:56:02 +02:00
Laurent Trinques 941efe6405 Typo 2026-04-25 12:05:29 +02:00
Laurent Trinques 07e11ea659 Try to fix NSIS : LangString "Fonts" is not set in language table of language * 2026-04-25 12:01:06 +02:00
Laurent Trinques 0832ef47a8 NSIS add Fonts directory on Windows installer 2026-04-25 11:17:48 +02:00
Laurent Trinques bc7f852f79 Add Missing language translations for QElectroTech installer
Auto-build doxygen docs / doxygen (push) Failing after 1m10s
Auto-build doxygen docs / deploy (push) Has been skipped
Languages added: hu, ja, mn, nb, nl_BE, nl_NL, pt_BR, rs/sr, sk, sl, sv, tr, uk, zh
2026-04-24 13:29:39 +02:00
Laurent Trinques d1e10afd61 Add notes.md
Auto-build doxygen docs / doxygen (push) Failing after 2m34s
Auto-build doxygen docs / deploy (push) Has been skipped
2026-04-24 13:05:27 +02:00
Laurent Trinques 8aa384d305 NSIS: remove LANG_DUTCH_BELGIAN
Auto-build doxygen docs / doxygen (push) Failing after 1m11s
Auto-build doxygen docs / deploy (push) Has been skipped
2026-04-23 14:40:35 +02:00
Laurent Trinques b321460116 NSIS, tRy to add LANG_DUTCH_BELGIAN, improve others not translated strings 2026-04-23 14:18:57 +02:00
Laurent Trinques 145810f33a Update Windows installer NSIS to 3.X version 2026-04-23 09:31:46 +02:00
Laurent Trinques fe52babc34 Update QET64.nsi
Auto-build doxygen docs / doxygen (push) Failing after 1m43s
Auto-build doxygen docs / deploy (push) Has been skipped
2026-02-05 15:37:47 +01:00
Laurent Trinques f4ff6b1b60 Update QET64.nsi 2026-02-05 15:34:49 +01:00
Laurent Trinques 9a1f93c5fc Merge pull request #425 from Kyle-Code-CA/patch-5
Restore copyright and license information in QET64.nsi
2026-02-05 14:01:55 +01:00
정광호 406fbe6e0c Restore copyright and license information in QET64.nsi 2026-02-05 21:50:44 +09:00
정광호 1b449686a8 Add Korean language strings to lang_extra.nsh 2026-02-05 21:40:37 +09:00
Magnus Hellströmer 82d7bbda68 Added swedish language 2025-02-16 20:54:15 +01:00
plc-user d971da5ac7 add commandline-parameter "--data-dir" 2025-01-27 21:48:36 +01:00
Laurent Trinques e9e2ea5b0e Try to fix bug #307 2024-06-02 17:02:53 +02:00
Laurent Trinques 701265e393 Revert 2024-06-01 12:39:59 +02:00
Laurent Trinques 073763d9bf Try to fix bug #307 2024-06-01 12:27:26 +02:00
Laurent Trinques 489bfe1a7f Delete very old 32 bits NSIS 2 script 2023-10-28 14:32:57 +02:00
Laurent Trinques 9fceb6f000 Update QET64.nsi
Fix old URL in help links
2023-10-28 14:28:43 +02:00
plc-user 9f1164a174 some German translations 2023-01-13 18:25:34 +01:00
Ole Carlsen c17492183f Danish translation updated 2022-11-24 17:54:18 +01:00
Mathieu Bridon d26b189d3d build: Rename the packaging directory
The Linux and Windows packaging recipes don't have any restrictions on
where they have to be located. Snapcraft is the strictest on this.

Moving this to build-aux/ means we can have all the packaging recipes in
one place.
2020-02-14 14:43:36 +01:00