Inhaltsverzeichnis
Struktura paketov
Struktura in pravila za WvdS Control/Component pakete - tako interne kot od tretjih ponudnikov.
Pregled
Paketi so distribucijski format za:
- Kontrole - Elementi uporabniškega vmesnika (Button, TextBox, DateEdit, …)
- Komponente - Nevizualne komponente (Timer, DataSource, …)
Paketi omogočajo namestitev kontrol brez spreminjanja WvdS jedra.
Struktura imenikov
Interni WvdS paketi
Pot: ~/packs/
~/packs/
├── controls/
│ ├── button/
│ │ └── pack.wvds.json
│ ├── textbox/
│ │ └── pack.wvds.json
│ └── dateedit/
│ └── pack.wvds.json
└── components/
├── timer/
│ └── pack.wvds.json
└── datasource/
└── pack.wvds.json
Paketi tretjih ponudnikov
Pot: ~/vendor-packs/
~/vendor-packs/
├── index.json # Indeks namestitev
├── oss/ # Odprtokodni paketi
│ └── {vendor}/
│ └── {pack}/
│ ├── pack.wvds.json # Manifest paketa (OBVEZNO)
│ ├── src/ # Pascal enote
│ │ ├── Model.pas
│ │ └── Renderers/
│ │ ├── TUI.pas
│ │ ├── Desktop.pas
│ │ └── Web.pas
│ ├── vsix/ # Viri za načrtovanje
│ ├── docs/ # API dokumentacija
│ └── license/ # OSS licenca
│ └── LICENSE.txt
└── proprietary/ # Lastniški paketi
└── {vendor}/
└── {pack}/
├── pack.wvds.json
├── src/ ali bin/ # Izvorna koda ali binarne datoteke
├── vsix/
├── docs/
├── license/
│ ├── LICENSE.txt
│ └── EULA.txt
└── integrity/ # Preverjanje celovitosti
├── SHA256SUMS
└── SIGNATURE.asc # Opcijsko
Manifest paketa
Vsak paket potrebuje datoteko pack.wvds.json:
{ "id": "dateedit", "vendor": "wvds", "version": "0.1.0", "license": "MIT", "description": "Polje za vnos datuma s pojavnim koledarjem", "xml": { "namespace": "wvds", "tag": "DateEdit" }, "model": { "unit": "WvdS.UI.Controls.Editors.DateEdit", "class": "TWvdSDateEdit" }, "renderers": { "tui": { "unit": "WvdS.UI.TUI.Renderers.DateEdit", "class": "TWvdSTUIDateEditRenderer" }, "desktop": { "unit": "WvdS.UI.Desktop.Renderers.DateEdit", "class": "TWvdSDesktopDateEditRenderer" }, "web": { "unit": "WvdS.UI.Web.Renderers.DateEdit", "class": "TWvdSWebDateEditRenderer" } }, "targetCaps": { "requires": ["keyboard"], "optional": ["mouse", "popup", "touch"] }, "dependencies": [], "compatibility": { "wvds": ">=0.1.0" } }
Polja manifesta
| Polje | Obvezno | Opis |
|---|---|---|
id | Da | Enolični identifikator paketa |
vendor | Da | ID ponudnika (npr. „wvds“, „dx“, „ms“) |
version | Da | Semantična verzija |
license | Da | Identifikator licence (SPDX) |
xml.namespace | Da | PXAML imenski prostor |
xml.tag | Da | PXAML ime oznake |
model.unit | Da | Pascal enota za model |
model.class | Da | Ime razreda modela |
renderers | Da | Izrisovalnik za vsak cilj |
targetCaps | Ne | Zahtevane/opcijske zmogljivosti |
dependencies | Ne | Odvisnosti od drugih paketov |
compatibility | Ne | Zahteva glede verzije WvdS |
Indeks namestitev
Pot: ~/vendor-packs/index.json
{ "version": "1.0", "installed": [ { "vendor": "dx", "pack": "dateedit-pro", "version": "2.1.0", "license": "proprietary", "location": "proprietary/dx/dateedit-pro", "enabledTargets": ["desktop", "web"], "installedAt": "2026-01-13T10:30:00Z", "integrity": { "sha256": "abc123..." } }, { "vendor": "jw", "pack": "charts", "version": "1.0.0", "license": "oss", "location": "oss/jw/charts", "enabledTargets": ["desktop", "web"], "installedAt": "2026-01-12T14:00:00Z" } ] }
CLI ukazi
Namestitev paketa
wvds-build pack install \ --from /path/to/packdir \ --to ~/vendor-packs \ --enable tui,desktop,web
Odstranitev paketa
wvds-build pack uninstall \ --vendor dx \ --pack dateedit-pro
Izpis nameščenih paketov
wvds-build pack list
Izhod:
Installed Packs: dx/dateedit-pro 2.1.0 [desktop, web] proprietary jw/charts 1.0.0 [desktop, web] oss
Konvencije poimenovanja
Paketi tretjih ponudnikov NE SMEJO uporabljati predpone
TWvdS*!
| Ponudnik | Predpona razreda | Primer |
|---|---|---|
| WvdS (interni) | TWvdS* | TWvdSDateEdit |
| DevExpress | TDx* | TDxDateEdit |
| Microsoft | TMs* | TMsFluentButton |
| JWorks | TJw* | TJwChartView |
Preverjanje celovitosti
Lastniški paketi morajo podpirati preverjanje celovitosti:
SHA256SUMS:
a1b2c3d4... src/Model.pas e5f6g7h8... src/Renderers/Desktop.pas i9j0k1l2... src/Renderers/Web.pas
Opcijski podpis:
# Ustvari podpis gpg --armor --detach-sign SHA256SUMS # Preveri podpis gpg --verify SHA256SUMS.asc SHA256SUMS
Pomembna pravila
NOBENIH sprememb jedra WvdS med namestitvijo: ✗ ~/sources/common/WvdS/** se NE SME urejati ✗ Brez ročnih sprememb "uses" v jedrnih enotah Izolacija paketov: ✓ Vsak paket je samostojen ✓ Odstranitev odstrani vse datoteke paketa ✓ Index.json se posodablja atomarno Povratna združljivost: ✓ Format manifesta paketa je verzioniran ✓ Starejši paketi delujejo z novejšimi verzijami WvdS ✓ Prelomne spremembe so signalizirane z verzijo manifesta
Ustvarjanje paketa tretjega ponudnika
Korak 1: Ustvari ogrodje
mkdir -p ~/vendor-packs/oss/myvendor/mycontrol/{src,docs,license}
Korak 2: Napiši manifest
cat > ~/vendor-packs/oss/myvendor/mycontrol/pack.wvds.json << 'EOF' { "id": "mycontrol", "vendor": "myvendor", "version": "1.0.0", "license": "MIT", "xml": { "namespace": "mv", "tag": "MyControl" }, "model": { "unit": "MyVendor.Controls.MyControl", "class": "TMvMyControl" }, "renderers": { "web": { "unit": "MyVendor.Web.Renderers.MyControl", "class": "TMvWebMyControlRenderer" } } } EOF
Korak 3: Ustvari Pascal enote
- Model enota v
src/ - Izrisovalne enote v
src/Renderers/
Korak 4: Dodaj licenco
cp LICENSE.txt ~/vendor-packs/oss/myvendor/mycontrol/license/
Korak 5: Registriraj
wvds-build pack install \ --from ~/vendor-packs/oss/myvendor/mycontrol \ --enable web
Glejte tudi
Zuletzt geändert: dne 29.01.2026 ob 22:23