docuBridge ist ein modulares Integrations- und Import-Framework zur strukturierten Übertragung externer Daten und Dokumente in docuvita (docuvita Sidebar).
Das System dient als Brücke zwischen Dateisystemen, Fremdanwendungen und docuvita-Importmechanismen (AutoProfiler, dvImport).
Ziel: reproduzierbare, konfigurierbare und automatisierte Datenübernahme ohne direkte Manipulation der Quelldaten.
docuBridge besteht aus mehreren logisch getrennten Komponenten:
| AppName | Technologie | Beschreibung |
|---|---|---|
docuBridge Client |
.NET 4.8 | Client auf Clientrechnern |
docuBridge Server |
ASP.NET | Serveranwendung |
docuBridge Server.Configurator |
.NET 4.8 | Konfigurationsanwendung für den Server |
Die Architektur folgt einem serverzentrierten Modell mit externer Konfiguration und optionaler Client-Kommunikation über TCP bzw. HTTP.
Externe Datenquelle (ERP, Dateisystem, Anwendung)
→ docuBridge Client
→ strukturierte Metadaten (JSON)
→ docuBridge Server
→ docuvita (Import API / AutoProfiler)
Der docuBridge Client ist für Benutzerinteraktion und Kontextbildung verantwortlich,
während der docuBridge Server die zentrale Verarbeitung, Validierung und Weiterleitung der Metadaten übernimmt.
Bei Interaktion mit einem Objekt im ERP-System wird ein HTTP-Request an docuBridge gesendet.
Beispiel GET Request an localhost:
curl -G "http://hg-blp:25024/api/client/sidebar/selectObject" \
--data-urlencode "user=hkheun\\raphael" \
--data-urlencode "objectName=SALES QUOTE" \
--data-urlencode "objectValue=A250184"
Auf Basis dieser Daten wird die docuvita Sidebar im docuBridge Client aktualisiert.
Nach Eingang des Requests zeigt der docuBridge Client in der Sidebar:
Diese Informationen bilden den fachlichen Kontext für alle weiteren Aktionen innerhalb der Sidebar.
Basierend auf den empfangenen Objektinformationen kann eine Suche in docuvita ausgelöst werden.
Die Suche erfolgt anhand der im Server Configurator definierten Objekttypen und kann u. a. folgende Kriterien nutzen:
Die Suche kann flexibel umgeschaltet werden zwischen:


Über eine Drag-and-Drop-Funktion im Client kann ein Dokument für den Import nach docuvita ausgewählt werden.
Im Haupt-Tab (Haus-Icon) steht ein spezielles Eingabefeld für die Dokumentauswahl zur Verfügung.
Beim Klick auf dieses Feld öffnet sich ein Windows-Dateidialog (Explorer), über den der Benutzer eine Datei auswählen kann. Alternativ kann eine Datei per Drag-and-Drop auf dieses Feld gezogen werden.
Vor dem Hochladen bzw. Übertragen eines Dokuments muss im docuBridge Server Configurator ein gültiges Importtemplate für den jeweiligen Objekttyp konfiguriert sein.
Ohne eine definierte Template-Konfiguration ist kein Import nach docuvita möglich.
Im Tab „Struktur“ kann der Zielpfad für die Ablage in docuvita direkt über die Struktur ausgewählt werden.
Damit wird die Zielposition des Dokuments unmittelbar festgelegt, ohne den Umweg über die Pfadkonfiguration im Haupt-Tab.

Nach dem Ablegen des Dokuments öffnet sich eine Maske zur Importvorbereitung.
Abhängig von den empfangenen Kontextdaten werden automatisch vorbelegt:
Der Dateiname des zu importierenden Dokuments kann im docuBridge Server Configurator über das Feld dvTemplateFileName innerhalb des jeweiligen Objekttyps definiert werden.
Das Template legt fest, wie der finale Dateiname in docuvita gebildet wird.

Das Template kann Platzhalter enthalten, die zur Laufzeit durch Kontextdaten (Objekttyp, Vorgangs-ID) ersetzt werden.
Verhalten ohne Dateinamens-Template
Ist kein dvTemplateFileName definiert oder leer, wird das Originaldateiname des hochgeladenen Dokuments unverändert verwendet.
Die Entscheidung über den finalen Dateinamen erfolgt serverseitig auf Basis der Konfiguration.
Die vorbelegten Daten können vor dem Import geprüft und bei Bedarf angepasst werden.

Diese Maske dient der fachlichen und technischen Validierung vor der Übergabe an docuvita.
Der eigentliche Import des Dokuments erfolgt:
Für jeden Objekttyp kann ein oder mehrere Importtemplates definiert werden.
Ein Importtemplate legt fest:

Durch den Einsatz von Importtemplates kann flexibel auf Änderungen an Objekttypen oder fachlichen Anforderungen reagiert werden, ohne Anpassungen am Client-Code vorzunehmen.
In der Bedingung zur Ausführung können beliebige Variablen verwendet werden, die vom Client als Parameter übergeben werden.
Variablen können sowohl mit als auch ohne Platzhalter-Syntax @@...@@ angegeben werden.
Unterstützte Operatoren:
Logische Verknüpfungen:
Beispiel:
Kundennummer != null && @@Kundenname@@ notnull
Die in der Bedingung zur Ausführung verwendeten Variablen können ebenfalls direkt im Importtemplate genutzt werden.
Platzhalter werden zur Laufzeit durch die vom Client übergebenen Werte ersetzt.
Die Verwendung erfolgt über die Platzhalter-Syntax @@...@@.
Ein spezieller Platzhalter ist @@doc@@.
Dieser steht für das vollständige Dokumentobjekt, das vom Client übergeben wird, einschließlich aller zugehörigen Metadatenfelder.
@@doc@@ darf ausschließlich als eigenständiges XML-Element innerhalb der Struktur verwendet werden und nicht innerhalb von Attributen.
Beispiel:
<?xml version="1.0" encoding="utf-8"?>
<import>
<data>
<object type="Kundenakte" obj.name="@@kundenname@@ (@@kundennummer@@)">
<object type="Ordner" obj.name="Belege" kundennummer="@@kundennummer@@">
@@doc@@
</object>
</object>
</data>
</import>
RootDocuvitasystemconfig: Liste von Systemeinstellungen.mandanten: Mandanteninformationen.objecttypes: Objekttypdefinitionen.users: Benutzerinformationen.abfragen: Konfiguration der ODBC-Abfragen (inkl. ConnectionString).SystemConfig, Mandant, ObjectType, AbfrageFieldName: Name des Feldes.FieldType: FieldType beschreibt den logischen Datentyp, nicht den JSON-Typ.FieldValue: FieldValue wird immer als string serialisiert.FieldDescription: Beschreibung des Feldes.Die Kommunikation zwischen docuBridge Client und docuBridge Server erfolgt wahlweise über:
HTTP wird primär für synchrone Such- und Abfrageoperationen genutzt, während TCP für zustandsbehaftete oder ereignisbasierte Kommunikation vorgesehen ist.
Der docuBridge Server ist die zentrale Laufzeitkomponente des Systems zur:
JSON-Datei wird durch docuBridge Server beim Start (oder Reload) eingelesen. Wird über docuBridge Server.Configurator erstellt/editiert (GUI) und als JSON serialisiert.
{
"docuvita": {
"systemconfig": [
{
"FieldName": "dvUrl",
"FieldType": "S",
"FieldValue": "https://localhost:443/server/services/web",
"FieldDescription": ""
},
{
"FieldName": "dvApiKey",
"FieldType": "S",
"FieldValue": "",
"FieldDescription": ""
},
{
"FieldName": "dvImportUser",
"FieldType": "S",
"FieldValue": "",
"FieldDescription": ""
},
{
"FieldName": "dvImportPassword",
"FieldType": "S",
"FieldValue": "",
"FieldDescription": ""
}
],
"mandanten": {
"mandant": [
{
"FieldName": "dvMandantName",
"FieldType": "S",
"FieldValue": "",
"FieldDescription": ""
},
{
"FieldName": "dvMandantId",
"FieldType": "N",
"FieldValue": "1",
"FieldDescription": ""
}
]
},
"objecttypes": [
{
"objecttypefields": [
{
"FieldName": "dvObjecttypeName",
"FieldType": "S",
"FieldValue": "",
"FieldDescription": ""
},
{
"FieldName": "dvObjecttypeId",
"FieldType": "N",
"FieldValue": "1",
"FieldDescription": ""
},
{
"FieldName": "dvObjecttypeFieldIdCustomerNumber",
"FieldType": "N",
"FieldValue": "1",
"FieldDescription": ""
},
{
"FieldName": "dvObjecttypeFieldIdVendorNumber",
"FieldType": "N",
"FieldValue": "1",
"FieldDescription": ""
},
{
"FieldName": "dvObjecttypeFieldIdProcess",
"FieldType": "N",
"FieldValue": "1",
"FieldDescription": ""
},
{
"FieldName": "dvObjecttypeDvImportPath",
"FieldType": "S",
"FieldValue": "C:\\pfad\\zur\\Config\\dvImport\\dvImport_1",
"FieldDescription": ""
},
{
"FieldName": "dvTemplateFileName",
"FieldType": "S",
"FieldValue": "ObjectName (Vorgangsnummer)",
"FieldDescription": ""
},
{
"FieldName": "dvLinkedDocumentType",
"FieldType": "S",
"FieldValue": "offer,invoice,order,delivery_note,reminder",
"FieldDescription": ""
}
]
}
],
"users": {
"user": [
{
"FieldName": "benutzerName",
"FieldType": "S",
"FieldValue": "",
"FieldDescription": ""
},
{
"FieldName": "dvBenutzerName",
"FieldType": "S",
"FieldValue": "",
"FieldDescription": ""
},
{
"FieldName": "dvPassword",
"FieldType": "S",
"FieldValue": "",
"FieldDescription": ""
},
{
"FieldName": "dvMandant",
"FieldType": "N",
"FieldValue": "1",
"FieldDescription": ""
}
]
},
"abfragen": {
"abfrage": [
{
"FieldName": "ConnectionString",
"FieldType": "S",
"FieldValue": "",
"FieldDescription": ""
},
{
"FieldName": "dvLieferant",
"FieldType": "S",
"FieldValue": "",
"FieldDescription": ""
},
{
"FieldName": "dvKunde",
"FieldType": "S",
"FieldValue": "",
"FieldDescription": ""
},
{
"FieldName": "SALES+QUOTE",
"FieldType": "S",
"FieldValue": "",
"FieldDescription": ""
},
{
"FieldName": "ARTICLE",
"FieldType": "S",
"FieldValue": "",
"FieldDescription": ""
}
]
}
}
}
Die Konfiguration erfolgt über eine JSON Datei, diese kann in gängigen Editoren angepasst und erweitert werden, eine Anpassung über eine Benutzeroberfläche ist ebenfalls geplant.
Die Typkonvertierung erfolgt serverseitig anhand von FieldType.
| DvUrl | string | URL zum docuvita System |
| dvApiKey | string | API Key für das docuvita System |
| dvImportUser | string | Benutzername für das docuvita System |
| dvImportPassword | string | Passwort zum Benutzernamen |
| mandanten | object | Konfiguration der docuvita-Mandanten |
| mandant | Array | Liste der Mandanten-Felder |
| dvMandantName | string | Name des Mandanten |
| dvMandantId | string | In docuvita vergeben ID des Mandanten |
| objecttypes | Array | Konfiguration der Objekttypen |
| objecttypefields | Array | Felder des Objekttyps |
| dvObjecttypeName | string | Name des Objekttypes (muss identisch zur docuvita Konfiguration sein) |
| dvObjecttypeId | string (numerisch, serverseitig konvertiert) | In docuvita vergebene ID des Objekttyps |
| dvObjecttypeFieldIdCustomerNumber | string (numerisch, serverseitig konvertiert) | docuvita Field-Id für zugehörige Kundennummer bzw. eindeutige Kundenidentifikation aus dem ERP-System |
| dvObjecttypeFieldIdVendorNumber | string (numerisch, serverseitig konvertiert) | docuvita Field-Id für die zugehörige Lieferantennummer bzw. eindeutige Lieferantenidentifikation aus dem ERP-System |
| dvObjecttypeFieldIdProcess | string (numerisch, serverseitig konvertiert) | docuvita Field-Id für die Projektnummer bzw. eindeutige Vorgangs- oder Projektidentifikation aus dem ERP System |
| dvObjecttypeDvImportPath | string | Pfad zum dvImport Template |
| dvTemplateFileName | string | Template für FileName |
| dvLinkedDocumentType | string | Verknüpfte Dokumenttypen zu diesem Objekttyp, dient zum Vorausfüllen von Eigenschaften beim Import von Begleitdokumenten, kommasepariert |
| users | object | Konfiguration der Benutzer |
| user | Array | Liste der User-Felder |
| benutzerName | string | Benutzername im docuBridge System |
| dvBenutzerName | string | Benutzername im docuvita System |
| dvPassword | string | Passwort zum Benutzernamen im docuvita System |
| dvMandant | string | docuvita Mandant des Benutzers |
| abfragen | object | Konfiguration der ODBC Abfragen |
| abfrage | Array | Liste der ODBC-Abfragefelder |
| ConnectionString | string | ODBC Connection String |
| dvLieferant | string | ODBC Abfrage zur Ermittlung der Lieferantennummer |
| dvKunde | string | ODBC Abfrage zur Ermittlung der Kundennummer |
| SALES+QUOTE | string | ODBC Abfrage zur Ermittlung von Objektdaten für den Objekttyp SALES QUOTE |
| ARTICLE | string | ODBC Abfrage zur Ermittlung von Objektdaten für den Objekttyp ARTICLE |
Der docuBridge Client stellt die Benutzerschnittstelle dar und ermöglicht:
objectNameNr, objectName){
"serverUrl": "http://localhost:5000/",
"portTcp": "9010",
"logsPfad": "C:\\ProgramData\\docuBridge",
"tabControls":
[
"tabHome",
"tabTree",
"tabSearch",
"tabUpload"
]
}
Die Konfiguration des docuBridge Clients erfolgt über eine JSON Datei, diese kann in gängigen Editoren angepasst und erweitert werden.
| serverUrl | string | URL zum docuBridge Server |
| portTcp | string | Port für TCP requests |
| logsPfad | string | Pfad für Logdateien des Clients |
| tabControls | Array | Liste der angezeigten Tabs in der Sidebar, Reihenfolge entspricht der Anzeige |
Der docuBridge Server Configurator ist eine WinForms-Anwendung zur Erstellung, Pflege und Serialisierung der docuBridge-Serverkonfiguration.
Der docuBridge Server Configurator stellt eine grafische Benutzeroberfläche zur Erstellung und Pflege der JSON-Konfiguration bereit. Alle Änderungen werden visuell vorgenommen und anschließend als JSON serialisiert und vom Server eingelesen.
Der Configurator basiert auf einem TabControl mit spezialisierten UserControls:
Die Konfiguration ist versionskontrollfähig und deploymentfähig.
Im Rahmen der Server-Konfiguration können in ODBC-Abfragen Variablen verwendet werden, die zur Laufzeit durch den docuBridge Server gesetzt und weiterverarbeitet werden.
1. Ausführungsreihenfolge der SQL-Abfragen
Die Verarbeitung erfolgt in einer definierten Reihenfolge:
Primäre Abfrage (Objektermittlung)
Zunächst wird eine SQL-Abfrage basierend auf objectName und objectValue ausgeführt.
Beispiel:
SELECT [ID],[address] as LIEFERANTEN_ID,[comment],[doctype],[dateprinted],[datearchived]
FROM [ERPDEMOtk2].[dbo].[document] where doctype='@@objectName@@' and id='@@objectValue@@'
Ergebnis:
Ermittlung von LIEFERANTEN_ID oder KUNDEN_ID (abhängig vom Kontext).
Die erste Abfrage definiert die Basis für alle weiteren Variablen.
2. Sekundäre Abfragen (Detailermittlung)
Basierend auf den ermittelten IDs werden weitere Abfragen ausgeführt.
Beispiel (Kunde):
SELECT [id] as CUSTOMER_ID,[description] as CUSTOMER_NAME,[type]
FROM [ERPDEMOtk2].[dbo].[address] where type ='CUSTOMER' and id='@@kunden_id@@'
Ergebnis:
Ermittlung von Kundenname und Validierung/Ergänzung von Kundennummer.
3. Verfügbare Variablen (Tokens)
Folgende Variablen können in SQL-Templates verwendet werden:
Token-Namen sind case-insensitive implementiert.
4. Alias-Regeln
Damit Werte korrekt erkannt werden, müssen Alias-Namen gesetzt werden:
AS CUSTOMER_ID
AS LIEFERANTEN_ID
Unterstützte Alias-Namen
Für Kunden: CUSTOMER_ID, KUNDEN_ID, Kundennummer.
Für Lieferanten: VENDOR_ID, LIEFERANTEN_ID, Lieferantennummer.
Die Variablen kunden_id und lieferanten_id werden initial mit objectValue belegt und anschließend durch Ergebnisse der ersten SQL-Abfrage überschrieben.
Die zweite Abfrage ist abhängig vom Ergebnis der ersten Abfrage und wird nur ausgeführt, wenn entsprechende IDs ermittelt wurden.
Es wird jeweils nur ein Datensatz pro Abfrage verarbeitet.
Die Konfiguration umfasst u. a.:
Dieses Kapitel beschreibt die Installation von docuBridge auf einem Zielsystem sowie die grundlegenden vorbereitenden Schritte.
Für die Installation und den Betrieb von docuBridge müssen folgende Voraussetzungen erfüllt sein:
Für produktive Umgebungen wird eine stabile Netzwerkverbindung zwischen Client, Server, Datenbank und docuvita vorausgesetzt.
Für den Betrieb des docuBridge Servers ist ein SQL-Server-Zugriff erforderlich.
Für die Verbindung benötigte Daten:
User Id=docubridge_app;
Password=********;
Die Zugangsdaten werden kundenspezifisch vergeben
Das Installationspaket enthält abhängig von der Auswahl:
Start der Installation
Führen Sie die MSI-Datei mit Administratorrechten aus.
Willkommensdialog
Klicken Sie auf Weiter, um die Installation zu starten.

Lizenzvereinbarung
Lesen Sie die Lizenzvereinbarung sorgfältig durch und bestätigen Sie diese, um fortzufahren.

Auswahl des Installationsverzeichnisses
Wählen Sie den Zielordner für die Installation.
Komponentenauswahl
Wählen Sie die zu installierenden Komponenten:

Konfiguration des Log-Verzeichnisses
Definieren Sie den Ablageort für Log-Dateien.

Start der Installation
Klicken Sie auf Installieren, um den Installationsvorgang zu starten.

Abschluss
Nach erfolgreicher Installation wird ein Abschlussdialog angezeigt.

Fertigstellen
Für einen erfolgreichen Start müssen Sie die Lizenzdatei im Serverordner (docubridge_poc) unter dem unten angegebenen Pfad hinzufügen: C:\Program Files (x86)\docuBridge\docuBridgeServer\docubridge_poc.
Nach Abschluss der Installation sind folgende Schritte erforderlich:




Konfiguration einlesen
Der docuBridge Server liest die Konfiguration beim Start oder Neustart ein.
Funktionstest
Die Deinstallation erfolgt über die Windows-Systemsteuerung:

Konfigurations- und Log-Dateien können ggf. manuell entfernt werden.
docuBridge Client
C:\ProgramData\docuBridge gespeichert.Logs erstellt.Logs wird zusätzlich ein projektbezogener Unterordner angelegt (docuBridge Client).
docuBridge Server / docuBridge Server Configurator
Logs erstellt.Logs wird jeweils ein separater Unterordner pro Projekt bzw. Komponente angelegt (docuBridge Server, docuBridge Server Configurator).
Der Log-Pfad des docuBridge Clients wird in der Client-Konfigurationsdatei gespeichert:
C:\ProgramData\docuBridge\urlConfig\serverUrl.json
Änderungen am Log-Pfad erfolgen über die Client-Konfiguration und werden beim nächsten Start des Clients wirksam.
Der Log-Pfad für den docuBridge Server sowie den docuBridge Server Configurator wird in einer separaten Konfigurationsdatei gespeichert:
..docuBridge\docuBridgeServer\Config\logConfig.json
Diese Konfiguration wird zentral über den docuBridge Server Configurator gepflegt.
Änderungen am Log-Pfad werden persistent gespeichert und gelten für alle nachfolgenden Starts des Servers bzw. des Configurators.
Dieses Kapitel beschreibt den standardisierten Build- und Packaging-Prozess für docuBridge Client, docuBridge Server und docuBridge Server Configurator inklusive MSI-Erstellung mittels WiX Toolset.
Alte Publish-Ordner werden entfernt und neu erstellt.
$root = "D:\git\fd.docuBridge\docubridge_poc\Installer\publish"
$pub1 = Join-Path $root "WindowsFormsApp1"
$pub2 = Join-Path $root "docubridge_poc"
$pub3 = Join-Path $root "docuBridge.Server.Configurator"
Remove-Item $pub1,$pub2,$pub3 -Recurse -Force -ErrorAction SilentlyContinue
New-Item $pub1,$pub2,$pub3 -ItemType Directory -Force | Out-Null
Die Anwendungen docuBridge Client und docuBridge Server Configurator werden im Release-Modus gebaut.
Die Zielplattform (x86) ist im jeweiligen .csproj über PlatformTarget definiert.
$msbuild = "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe"
& $msbuild "D:\git\fd.docuBridge\docubridge_poc\WindowsFormsApp1\docuBridge.csproj" `
/p:Configuration=Release /m
& $msbuild "D:\git\fd.docuBridge\docubridge_poc\docuBridge.Server.Configurator\docuBridge.Server.Configurator.csproj" `
/p:Configuration=Release /m
robocopy "D:\git\fd.docuBridge\docubridge_poc\WindowsFormsApp1\bin\Release" `
"$pub1" /E /XF *.pdb *.xml *.vshost.*
robocopy "D:\git\fd.docuBridge\docubridge_poc\docuBridge.Server.Configurator\bin\Release" `
"$pub3" /E /XF *.pdb *.xml *.vshost.*
Der Server wird als self-contained Single-File veröffentlicht.
dotnet publish "D:\git\fd.docuBridge\docubridge_poc\docubridge_poc\docubridge_poc.csproj" `
-c Release -r win-x86 --self-contained true `
/p:PublishSingleFile=true /p:PublishTrimmed=false `
-o "$pub2"
Die aktuellen Publish-Verzeichnisse werden mittels heat.exe geharvestet.
cd "D:\git\fd.docuBridge\docubridge_poc\Installer"
$wix = "C:\Program Files (x86)\WiX Toolset v3.11\bin\heat.exe"
$root = "D:\git\fd.docuBridge\docubridge_poc\Installer\publish"
& $wix dir "$root\WindowsFormsApp1" `
-cg App1Group -dr APP1DIR `
-scom -sreg -srd -ke -gg -sfrag `
-var var.App1Src `
-out "App1_Harvest.wxs"
& $wix dir "$root\docubridge_poc" `
-cg App2Group -dr APP2DIR `
-scom -sreg -srd -ke -gg -sfrag `
-var var.App2Src `
-out "App2_Harvest.wxs"
& $wix dir "$root\docuBridge.Server.Configurator" `
-cg App3Group -dr APP3DIR `
-scom -sreg -srd -ke -gg -sfrag `
-var var.App3Src `
-out "App3_Harvest.wxs"
Select-String -Path .\App1_Harvest.wxs,.\App2_Harvest.wxs,.\App3_Harvest.wxs `
-Pattern 'Source="\$\(\s*var\.App[123]Src\)'
Wichtiger Hinweis: manuelle Änderungen in
*_Harvest.wxs(Pflichtschritt nach jedem Harvest)Die Dateien
App1_Harvest.wxs,App2_Harvest.wxsundApp3_Harvest.wxswerden bei jedem Durchlauf vonheat.exe
vollständig neu generiert. Alle manuell eingefügten Anpassungen werden dabei überschrieben.Folge: Wenn in diesen Harvest-Dateien manuelle Erweiterungen gepflegt werden (z. B. Shortcuts oder Windows-Dienst-Definitionen),
müssen diese Änderungen nach jedem Harvest erneut eingepflegt werden.Betroffene manuelle Erweiterungen:
App1_Harvest.wxs: Desktop- und Startmenü-Verknüpfungen (docuBridge Client)App2_Harvest.wxs:ServiceInstallundServiceControlbeimComponentmitdocubridge_poc.exe(docuBridge Server)App3_Harvest.wxs: Startmenü-Verknüpfung (docuBridge Server Configurator)Wird dieser Schritt übersprungen, kann das MSI zwar gebaut werden, aber es fehlen u. a. Verknüpfungen und/oder die Dienstinstallation.
& "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" `
"D:\git\fd.docuBridge\docubridge_poc\Installer\Installer.wixproj" `
/t:Rebuild /p:Configuration=Release /m
Diese Fragmente werden manuell in App1_Harvest.wxs ergänzt.
<Fragment>
<DirectoryRef Id="DesktopFolder">
<Component Id="cmp_DocuBridgeClient_DesktopShortcut"
Guid="*">
<Shortcut Id="sc_WinFormsApp1_Desktop"
Directory="DesktopFolder"
Name="docuBridge Client"
Target="[APP1DIR]WindowsFormsApp1.exe"
WorkingDirectory="APP1DIR" />
<RegistryValue Root="HKCU"
Key="Software\faktur:digital\docuBridge"
Name="DesktopShortcut"
Type="integer"
Value="1"
KeyPath="yes" />
</Component>
</DirectoryRef>
</Fragment>
<Fragment>
<DirectoryRef Id="ProgramMenuFolder">
<Component Id="cmp_DocuBridgeClient_StartMenu" Guid="*">
<Shortcut Id="sc_Client_StartMenu"
Name="docuBridge Client"
Target="[APP1DIR]WindowsFormsApp1.exe"
WorkingDirectory="APP1DIR" />
<RegistryValue Root="HKCU"
Key="Software\faktur:digital\docuBridge"
Name="ClientStartMenu"
Type="integer"
Value="1"
KeyPath="yes" />
</Component>
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="App1Group">
<ComponentRef Id="cmp_DocuBridgeClient_DesktopShortcut" />
<ComponentRef Id="cmp_DocuBridgeClient_StartMenu" />
<!-- weitere ComponentRef aus Harvest -->
</ComponentGroup>
</Fragment>
Installation des Servers als Windows-Dienst ohne automatischen Start.
In App2_Harvest.wxs wird beim Component mit docubridge_poc.exe der Dienst ergänzt.
<Component Id="cmp59617D4686D5A9B63084051CD59361AA" Guid="{B3CFD9F3-4DD7-4272-A35D-A817C80264A5}">
<File Id="filA6006AA4A90F4248FF24B1A5C3B4E6CB" KeyPath="yes" Source="$(var.App2Src)\docubridge_poc.exe" />
<ServiceInstall Id="DocuBridgeServiceInstall"
Type="ownProcess"
Name="docubridge_poc"
DisplayName="docuBridge Server"
Start="demand"
ErrorControl="normal" />
<ServiceControl Id="DocuBridgeServiceControl"
Name="docubridge_poc"
Stop="both"
Remove="uninstall"
Wait="yes" />
</Component>
Diese Fragmente werden manuell in App3_Harvest.wxs ergänzt.
<Fragment>
<DirectoryRef Id="ProgramMenuFolder">
<Component Id="cmp_DocuBridgeConfigurator_StartMenu" Guid="*">
<Shortcut Id="sc_Configurator_StartMenu"
Name="docuBridge Configurator"
Target="[APP3DIR]docuBridge.Server.Configurator.exe"
WorkingDirectory="APP3DIR" />
<RegistryValue Root="HKCU"
Key="Software\faktur:digital\docuBridge"
Name="ConfiguratorStartMenu"
Type="integer"
Value="1"
KeyPath="yes" />
</Component>
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="App3Group">
<ComponentRef Id="cmp_DocuBridgeConfigurator_StartMenu" />
<!-- weitere ComponentRef aus Harvest -->
</ComponentGroup>
</Fragment>
Nach erfolgreichem Rebuild werden folgende Artefakte committed:
App1_Harvest.wxs, App2_Harvest.wxs, App3_Harvest.wxs (inkl. manueller Ergänzungen)Installer.wixproj / weitere .wxs, falls angepasst| Version | Anmerkungen |
|---|---|
| 26.2.24 | Release |