diff --git a/devdocs/modernization/NET10-PORT.md b/devdocs/modernization/NET10-PORT.md index a23151a0..d7b118d6 100644 --- a/devdocs/modernization/NET10-PORT.md +++ b/devdocs/modernization/NET10-PORT.md @@ -187,7 +187,7 @@ Found during the port, out of scope. One line each. - `raven-launcher` `Program.cs:98` calls `PGProcess.StandardInput.Close()` but standard input was never redirected, so it throws `InvalidOperationException` at shutdown: the "Postgres shut down" step never runs and the launcher exits with an error when the server stops. Postgres was started detached by `pg_ctl start`, so it probably stays running. Pre-existing; candidate for its own case. **Confirmed in the Sandbox test (8.2.4 and 8.3.0):** after "Shut down server" the launcher crashes with exactly this exception and 7 `postgres` processes stay running. Every standalone upgrade then stops at Setup's "files in use" page listing PostgreSQL Server, and "automatically close the applications" fails ("Setup was unable to automatically close all applications"): the customer must end the processes or restart Windows first. One-line fix (stop PostgreSQL with `pg_ctl stop` instead of writing to its standard input). **John, 2026-10-23: own case, fixed with the "next release" cases before 8.3.0** - **Standalone install needs the Visual C++ runtime (pre-existing, same in 8.2.4; John, 2026-10-23: own case, fixed with the "next release" cases before 8.3.0):** the bundled PostgreSQL (`local-postgres\bin\pg_ctl.exe`, `postgres.exe`) needs `VCRUNTIME140.dll`, which neither the installer nor `local-postgres` provides. A Windows without it (a new PC, Windows Sandbox) shows "pg_ctl.exe - System Error: VCRUNTIME140.dll was not found" and AyaNova never starts. Confirmed fix: copying `vcruntime140.dll`, `vcruntime140_1.dll` and `msvcp140.dll` (x64, 14.44) into `local-postgres\bin` made PostgreSQL start. Ship those three in `dist\win-x64\postgres-standalone\bin` (app-local, allowed by Microsoft's redistribution terms) rather than running `vc_redist.x64.exe` (it crashed Windows Sandbox mid-install) - Standalone `config.json` (launcher template) has no `AYANOVA_JWT_SECRET`, so every boot logs a warning and generates a random one (logins are lost on restart). Pre-existing; noted from the Sandbox test logs. **John, 2026-10-23: own case, fixed with the "next release" cases before 8.3.0** -- Standalone and LAN installers share the same Inno Setup `AppId` (`{B2BB79DB-0690-497C-B92B-955F7B468429}`) although they are different products (`AyaNova` vs `AyaNova server`): installing one over the other would be treated as the same application. Pre-existing; not tested. Both also install to the same folder (`{autopf}\ayanova`) and use port 7575, so the two flavours could never sit side by side on one machine anyway; the shared `AppId` only changes what happens when one flavour is installed **over** the other (e.g. an evaluator moving from standalone to LAN on the same PC): Setup treats it as an upgrade of the same program. Changing either `AppId` now would make that flavour's next installer miss existing installs (second Add/Remove entry over the same folder). Standalone is thought to be used almost only for evaluation (John). Undecided (John, 2026-10-23); simplest option: leave the `AppId`s and tell users to uninstall one flavour before installing the other +- Standalone and LAN installers share the same Inno Setup `AppId` (`{B2BB79DB-0690-497C-B92B-955F7B468429}`) although they are different products (`AyaNova` vs `AyaNova server`): installing one over the other would be treated as the same application. Pre-existing; not tested. Both also install to the same folder (`{autopf}\ayanova`) and use port 7575, so the two flavours could never sit side by side on one machine anyway; the shared `AppId` only changes what happens when one flavour is installed **over** the other (e.g. an evaluator moving from standalone to LAN on the same PC): Setup treats it as an upgrade of the same program. Changing either `AppId` now would make that flavour's next installer miss existing installs (second Add/Remove entry over the same folder). Standalone is thought to be used almost only for evaluation (John). **John, 2026-10-23: keep both `AppId`s as they are**; the Windows install pages now say only one type per computer, uninstall the other first (backup and restore to switch) - Sockeye 8.1.0 has the NLog 6 archive naming problem fixed here for AyaNova: archives are `log-sockeye_NN.txt`, old `-0` to `-8` archives are never deleted, and its log viewer still sorts by name (it also filters on `ayanova.txt`, not `sockeye.txt`, so the current file is listed twice). Same fix applies: `ArchiveSuffixFormat = "-{0}"` and the date sort - **SuperUser can be deleted (serious, pre-existing, own case; John's decision 2026-10-23: fixed with the other "next release" cases before 8.3.0 ships, not under the port):** `UserBiz.ValidateCanDelete` (`biz/UserBiz.cs:1055`) only refuses a delete when the user has related records; nothing protects user id 1, although updates to it are blocked (`UserBiz.cs:946`). On the droplet, whose sample data left SuperUser with no related records, the integration test `UserWithActivityShouldNotBeDeleteable` (`DELETE User/1`) succeeded and removed the account; `AYANOVA_SET_SUPERUSER_PW` cannot bring it back (it only resets an existing user 1). Same code in 8.2.4; likely also why `superuser` could not log in on the reused local database at the first baseline attempt. Any user with delete rights on Users can do this - `RunProgram.Run` (and its `RunWindows`/`RunLinuxShell`/`RunOSX` helpers) has no callers since the backup moved to `RunNoShell`. It runs through `cmd.exe /C` or `/bin/sh -c` and logs its full command line on error: delete it rather than reuse it diff --git a/docs/8.0/ayanova/docs/ops-install-windows-iis.md b/docs/8.0/ayanova/docs/ops-install-windows-iis.md index b3d961a2..86f700fa 100644 --- a/docs/8.0/ayanova/docs/ops-install-windows-iis.md +++ b/docs/8.0/ayanova/docs/ops-install-windows-iis.md @@ -136,6 +136,8 @@ Microsoft.NETCore.App 10.0.13 [C:\Program Files\dotnet\shared\Microsoft.NETCore. ### 4\. AyaNova server installation +**Note**: if another type of AyaNova installation is already on this computer, uninstall it first; see [only one type of AyaNova installation per computer](ops-install-windows.md). + Once you have ensured the three requirements above are installed and available, download and run the AyaNova network installer: [https://www.ayanova.com/download/ayanova-windows-x64-lan-setup.exe](https://www.ayanova.com/download/ayanova-windows-x64-lan-setup.exe). #### Smart screen warning diff --git a/docs/8.0/ayanova/docs/ops-install-windows-lan.md b/docs/8.0/ayanova/docs/ops-install-windows-lan.md index 6c1b2dbd..f0a65110 100644 --- a/docs/8.0/ayanova/docs/ops-install-windows-lan.md +++ b/docs/8.0/ayanova/docs/ops-install-windows-lan.md @@ -72,6 +72,8 @@ Microsoft.NETCore.App 10.0.13 [C:\Program Files\dotnet\shared\Microsoft.NETCore. ### 3\. AyaNova server installation +**Note**: if another type of AyaNova installation is already on this computer, uninstall it first; see [only one type of AyaNova installation per computer](ops-install-windows.md). + Once you have ensured the two requirements above are installed and available; download and run the AyaNova network installer: [https://www.ayanova.com/download/ayanova-windows-x64-lan-setup.exe](https://www.ayanova.com/download/ayanova-windows-x64-lan-setup.exe). #### Smart screen warning diff --git a/docs/8.0/ayanova/docs/ops-install-windows-single.md b/docs/8.0/ayanova/docs/ops-install-windows-single.md index 34023cb2..d23c0b33 100644 --- a/docs/8.0/ayanova/docs/ops-install-windows-single.md +++ b/docs/8.0/ayanova/docs/ops-install-windows-single.md @@ -35,6 +35,8 @@ The single user installer will use TCP/IP ports 6432 for the PostgreSQL server a ## Installation procedure +**Note**: if another type of AyaNova installation is already on this computer, uninstall it first; see [only one type of AyaNova installation per computer](ops-install-windows.md). + 1\. Download and run the standalone installer from our web site [https://www.ayanova.com/download/ayanova-windows-x64-single-setup.exe](https://www.ayanova.com/download/ayanova-windows-x64-single-setup.exe) diff --git a/docs/8.0/ayanova/docs/ops-install-windows.md b/docs/8.0/ayanova/docs/ops-install-windows.md index 2b2ec7ac..50ef7f17 100644 --- a/docs/8.0/ayanova/docs/ops-install-windows.md +++ b/docs/8.0/ayanova/docs/ops-install-windows.md @@ -2,6 +2,8 @@ Choose how AyaNova will be used for specific Windows installation instructions. Note that it's possible to switch to an alternative configuration via backup and restore if needs change later however if there is a possibility that AyaNova will be accessed from the internet it's recommended to install as an IIS hosted application. +**Only one type of AyaNova installation per computer:** the single user, local network and IIS installations use the same program folder and network port, and the AyaNova installers treat them as the same program. To change an existing installation to another type on the same computer, first [make a backup](ops-form-backup.md) and keep it somewhere safe, uninstall AyaNova from Windows Settings -> Apps, then follow the installation guide for the new type and restore the backup. + ## Single user installation This type of install is appropriate for using AyaNova locally on a single personal computer only. This type of installation is _not_ appropriate for sharing with multiple users.