Aggiungi il setup per-utente e fissa il DB nella cartella di installazione
Nuovo installer/PrepStep.iss (Inno Setup 6): installa in %LOCALAPPDATA%\Programs\PrepStep senza diritti di amministratore, con collegamenti nel menu Start al programma e al disinstallatore. Se l'app è già installata chiede se aggiornarla o disinstallarla (Inno da solo aggiornerebbe sempre); con /VERYSILENT aggiorna senza chiedere. Il DB è ora sempre cad_index.db accanto all'eseguibile, cioè nella cartella di installazione: non si ricorda più l'ultimo DB aperto (ultimo_db.txt) e "Apri DB..." vale solo per la sessione. Senza una cartella di lavoro salvata si propone la cartella di installazione invece di quella del DB. Doc aggiornati nello stesso commit: README.md, CLAUDE.md, docs/architettura.md, docs/db-cad-index.md, docs/guida-utente.md, CHANGELOG.md. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
206db85e12
commit
57020f9964
9 files changed
+209
-81
No files matched your search
+27
-10
@@ -119,8 +119,8 @@ trascinano i `.asm` su Creo Distributed Batch, che scrive in `step/`.
|
||||
silenziosamente quelli irraggiungibili (share offline/permessi).
|
||||
- `PulisciRawEStep` — svuota `raw/` e `step/` nella cartella di lavoro (manutenzione,
|
||||
richiede conferma).
|
||||
- `InizializzaDatabase` / `ScegliDatabase` — localizzazione del DB (ultimo usato, salvato in
|
||||
`%AppData%/PrepStep/ultimo_db.txt`, o `cad_index.db` accanto all'eseguibile).
|
||||
- `InizializzaDatabase` / `ScegliDatabase` — localizzazione del DB (sempre `cad_index.db` accanto
|
||||
all'eseguibile; "Apri DB..." ne carica un altro solo per la sessione).
|
||||
- `InizializzaCartellaLavoro` / `ScegliCartellaLavoro` — stesso pattern per la cartella di
|
||||
lavoro (`ultima_cartella_lavoro.txt`), fallback `AppContext.BaseDirectory` se non c'è
|
||||
ancora nulla di salvato: nessuna dipendenza da un marker di repo, funziona identica
|
||||
@@ -242,21 +242,38 @@ completi".
|
||||
## Persistenza
|
||||
|
||||
- **DB** (`cad_index.db`, SQLite) — vedi tabella `files`/vista `files_ultima_versione` sopra.
|
||||
Percorso ricordato tra un avvio e l'altro in `%AppData%/PrepStep/ultimo_db.txt`
|
||||
(`SalvaUltimoDbUsato`/`LeggiUltimoDbUsato`), scritto ogni volta che si carica un DB
|
||||
(all'avvio se già noto, oppure da "Apri DB..." o al termine di "Aggiorna indice"); se il
|
||||
file non c'è o punta a un percorso cancellato, `InizializzaDatabase` ripiega su
|
||||
`cad_index.db` accanto all'eseguibile o nella working directory. Radice disco di scansione
|
||||
Sempre `cad_index.db` accanto all'eseguibile (`AppContext.BaseDirectory`, cioè la cartella
|
||||
di installazione): `InizializzaDatabase` carica solo quello, e "Aggiorna indice" lo crea lì
|
||||
se manca. "Apri DB..." carica un altro file solo per la sessione corrente, senza
|
||||
ricordarlo. Radice disco di scansione
|
||||
di default `X:\` (`Form1.RadiceDiscoDefault`, hardcoded).
|
||||
- **Cartella di lavoro** — stesso meccanismo del DB sopra, salvata in
|
||||
- **Cartella di lavoro** — ricordata tra un avvio e l'altro in
|
||||
`%AppData%/PrepStep/ultima_cartella_lavoro.txt`; se non c'è una preferenza salvata (o punta
|
||||
a una cartella cancellata) si propone la cartella del DB caricato, o in ultima istanza
|
||||
`AppContext.BaseDirectory`; cambiabile in qualunque momento da "File → Scegli cartella di
|
||||
a una cartella cancellata) si propone la cartella di installazione
|
||||
(`AppContext.BaseDirectory`); cambiabile in qualunque momento da "File → Scegli cartella di
|
||||
lavoro...". Tutti i file generati a valle ci finiscono dentro: il CSV della distinta, `raw/`
|
||||
(CAD dei componenti e sotto-componenti); `step/` non è scritta dall'app ma è dove l'utente
|
||||
esporta gli STEP a mano con Creo Distributed Batch, a partire dai file trascinati da `raw/`
|
||||
in fase 5.
|
||||
|
||||
## Installazione
|
||||
|
||||
`installer/PrepStep.iss` (Inno Setup 6) impacchetta `PrepStep/publish/PrepStep.exe` in un
|
||||
setup **per-utente** (`PrivilegesRequired=lowest`, quindi `{autopf}` =
|
||||
`%LOCALAPPDATA%\Programs`, cartella `PrepStep`): niente admin, e la cartella resta scrivibile —
|
||||
cosa che serve, perché `cad_index.db` e (di default) la cartella di lavoro con `raw/`
|
||||
stanno accanto all'eseguibile (`AppContext.BaseDirectory`, vedi Persistenza). In `C:\Program Files` fallirebbe per un utente
|
||||
normale. Versione del setup letta dall'`exe` (ProductVersion, tolto il `+<commit>`), quindi
|
||||
basta cambiare `<Version>` nel csproj. L'`AppId` fisso fa riconoscere a Windows le versioni
|
||||
nuove come aggiornamento della stessa app: non va cambiato
|
||||
(`AppGuid` nello script). Se l'app risulta già installata (chiave `…\Uninstall\{AppGuid}_is1`
|
||||
in HKCU), `InitializeSetup` nella sezione `[Code]` chiede se aggiornare o disinstallare (lancia
|
||||
l'`UninstallString`), perché Inno da solo aggiornerebbe sempre; con `/VERYSILENT` non chiede.
|
||||
La disinstallazione rimuove solo
|
||||
i file installati: `cad_index.db`, `raw/`/`step/`/CSV creati accanto all'exe e
|
||||
`%AppData%/PrepStep/` restano.
|
||||
Comandi di build del setup nel `README.md`.
|
||||
|
||||
## Script standalone (`scripts/`)
|
||||
|
||||
C# file-based apps (.NET 10, `dotnet run scripts/Nome.cs -- arg1 arg2`, nessun `.csproj`,
|
||||
|
||||
+11
-15
@@ -109,24 +109,20 @@ sulla share, non tipicamente cercato dalla UI).
|
||||
|
||||
## Come l'app trova il DB all'avvio
|
||||
|
||||
`Form1.InizializzaDatabase` prova, in ordine, i seguenti candidati e usa il primo che esiste
|
||||
su disco:
|
||||
`Form1.InizializzaDatabase` carica sempre e solo `cad_index.db` accanto all'eseguibile
|
||||
(`AppContext.BaseDirectory`: con il setup è `%LOCALAPPDATA%\Programs\PrepStep`). Nessun
|
||||
percorso viene ricordato fra un avvio e l'altro.
|
||||
|
||||
1. l'ultimo DB caricato con successo, salvato in
|
||||
`%AppData%/PrepStep/ultimo_db.txt` (`Form1.LeggiUltimoDbUsato`/`SalvaUltimoDbUsato`)
|
||||
2. `cad_index.db` accanto all'eseguibile (`AppContext.BaseDirectory`)
|
||||
3. `cad_index.db` nella working directory corrente
|
||||
|
||||
Se nessuno dei tre esiste, la fase 1 resta bloccata su "Database non trovato" finché l'utente
|
||||
non preme "Apri DB..." (`Form1.ScegliDatabase`, file picker libero) o "Aggiorna indice"
|
||||
(`Form1.AggiornaIndice`, che crea `cad_index.db` da zero accanto all'eseguibile se non c'è
|
||||
ancora un `_dbPath`).
|
||||
Se non esiste, la fase 1 resta bloccata su "Database non trovato" finché l'utente non preme
|
||||
"Aggiorna indice" (`Form1.AggiornaIndice`, che crea `cad_index.db` da zero accanto
|
||||
all'eseguibile) o "Apri DB..." (`Form1.ScegliDatabase`, file picker libero: il DB scelto vale
|
||||
solo per la sessione corrente, e "Aggiorna indice" aggiorna quello).
|
||||
|
||||
**Attenzione in sviluppo (dotnet run / IDE):** `AppContext.BaseDirectory` è la cartella di
|
||||
build (`PrepStep/bin/Release/net10.0-windows` o `Debug/...`), non la radice del repo. Se in
|
||||
quella cartella finisce per errore una copia di `cad_index.db` (es. creata lì da una vecchia
|
||||
sessione), l'app la userà invece di quella nella radice del repo, e le due copie divergeranno
|
||||
a ogni "Aggiorna indice" fatto nell'uno o nell'altro ambiente. Se i risultati di una ricerca
|
||||
build (`PrepStep/bin/Release/net10.0-windows` o `Debug/...`), non la radice del repo. L'app usa
|
||||
quindi la copia di `cad_index.db` in quella cartella (creandola lì al primo "Aggiorna
|
||||
indice"), non quella nella radice del repo né quella installata: per usare un altro DB in
|
||||
sviluppo va aperto con "Apri DB..." a ogni avvio. Se i risultati di una ricerca
|
||||
sembrano incoerenti con quello che ti aspetti di vedere sul DB "giusto", controlla con "Apri
|
||||
DB..." quale file è effettivamente caricato (mostrato in fase 1 accanto al conteggio dei file
|
||||
indicizzati) prima di sospettare un bug nella ricerca.
|
||||
|
||||
+22
-2
@@ -7,6 +7,23 @@ fase vedi [`architettura.md`](architettura.md); questa guida si ferma a cosa cli
|
||||
cosa vede l'utente. La stessa sintesi è disponibile anche dentro l'app da **Aiuto → Guida**
|
||||
(F1).
|
||||
|
||||
## Installazione
|
||||
|
||||
1. Lancia `PrepStep-Setup-<versione>.exe` (non servono i diritti di amministratore).
|
||||
2. Alla fine lascia spuntato "Avvia Cevolani StepPrep", oppure aprilo dal menu Start.
|
||||
|
||||
Il programma si installa in `%LOCALAPPDATA%\Programs\PrepStep`. Il database `cad_index.db` sta sempre in questa cartella.
|
||||
|
||||
Se il programma è già installato, il setup chiede cosa fare:
|
||||
|
||||
- **Sì** — lo aggiorna (o reinstalla): database e cartella di lavoro restano quelli di prima;
|
||||
- **No** — lo disinstalla;
|
||||
- **Annulla** — esce senza fare nulla.
|
||||
|
||||
Per **disinstallarlo** si può anche usare menu Start → "Disinstalla Cevolani StepPrep", oppure
|
||||
Impostazioni → App installate → Cevolani StepPrep → Disinstalla (il
|
||||
database `cad_index.db` e le impostazioni non vengono cancellati, vedi sotto).
|
||||
|
||||
## Prima di iniziare
|
||||
|
||||
- Serve accesso alla share di rete con i file CAD (di default `X:\`).
|
||||
@@ -39,9 +56,12 @@ file e la data dell'ultimo aggiornamento.
|
||||
minuto la prima volta, i giri successivi sono più veloci perché aggiornano solo quello
|
||||
che è cambiato.
|
||||
- **Se hai già un database da un'altra postazione o cartella**: premi **Apri DB...** e
|
||||
selezionalo a mano.
|
||||
selezionalo a mano. Vale solo finché non chiudi il programma: al prossimo avvio si riparte
|
||||
dal database nella cartella di installazione. Per usarlo sempre, copialo in
|
||||
`%LOCALAPPDATA%\Programs\PrepStep` come `cad_index.db`.
|
||||
- La **cartella di lavoro** (dove l'app scrive il CSV della distinta e la cartella
|
||||
`raw/`) è scelta automaticamente e ricordata tra un avvio e l'altro; per cambiarla usa
|
||||
`raw/`) è ricordata tra un avvio e l'altro; la prima volta è la cartella di installazione
|
||||
(`%LOCALAPPDATA%\Programs\PrepStep`); per cambiarla usa
|
||||
**File → Scegli cartella di lavoro...**.
|
||||
|
||||
Premi **Avanti** quando il database è caricato.
|
||||
|
||||
Reference in new issue
Block a user