feat: Fleet Forge UEM - device management, agent, remote desktop (VNC), TLS reverse proxy
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
FROM ubuntu:24.04
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends msitools wixl wixl-data && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
@@ -0,0 +1,67 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<Product Id="*"
|
||||
Name="Fleet Forge Agent"
|
||||
Language="1033"
|
||||
Version="__VERSION__"
|
||||
Manufacturer="FleetForge"
|
||||
UpgradeCode="A1B2C3D4-E5F6-7890-ABCD-EF1234567890">
|
||||
|
||||
<Package InstallerVersion="200"
|
||||
Compressed="yes"
|
||||
InstallScope="perMachine"
|
||||
Description="Fleet Forge Agent"
|
||||
Comments="Fleet Forge endpoint management agent for Windows" />
|
||||
|
||||
<MajorUpgrade DowngradeErrorMessage="A newer version is already installed." />
|
||||
<MediaTemplate EmbedCab="yes" />
|
||||
|
||||
<Feature Id="AgentFeature" Title="Fleet Forge Agent" Level="1">
|
||||
<ComponentRef Id="AgentBinary" />
|
||||
<ComponentRef Id="AgentConfig" />
|
||||
</Feature>
|
||||
|
||||
<Icon Id="FleetForgeIcon" SourceFile="$(var.AgentBinaryPath)" />
|
||||
<Property Id="ARPPRODUCTICON" Value="FleetForgeIcon" />
|
||||
|
||||
<Directory Id="TARGETDIR" Name="SourceDir">
|
||||
<Directory Id="ProgramFilesFolder">
|
||||
<Directory Id="INSTALLFOLDER" Name="FleetForge">
|
||||
<Component Id="AgentBinary" Guid="B1C2D3E4-F5A6-7890-BCDE-F12345678901" Win64="yes">
|
||||
<File Id="AgentExe"
|
||||
Source="$(var.AgentBinaryPath)"
|
||||
KeyPath="yes"
|
||||
Name="forge-agent.exe" />
|
||||
<ServiceInstall Id="FleetForgeService"
|
||||
Name="FleetForgeAgent"
|
||||
DisplayName="Fleet Forge Agent"
|
||||
Description="Fleet Forge endpoint management agent"
|
||||
Start="auto"
|
||||
Type="ownProcess"
|
||||
ErrorControl="normal"
|
||||
Interactive="no"
|
||||
Account="NT AUTHORITY\SYSTEM"
|
||||
Arguments="run --service" />
|
||||
<ServiceControl Id="FleetForgeServiceControl"
|
||||
Name="FleetForgeAgent"
|
||||
Stop="both"
|
||||
Remove="uninstall"
|
||||
Wait="no" />
|
||||
</Component>
|
||||
</Directory>
|
||||
</Directory>
|
||||
<Directory Id="CommonAppDataFolder">
|
||||
<Directory Id="FleetForgeDataFolder" Name="FleetForge">
|
||||
<Component Id="AgentConfig" Guid="C2D3E4F5-A6B7-8901-CDEF-123456789012" Win64="yes">
|
||||
<CreateFolder />
|
||||
<File Id="ConfigJson"
|
||||
Source="$(var.ConfigFilePath)"
|
||||
KeyPath="yes"
|
||||
Name="config.json" />
|
||||
</Component>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
|
||||
</Product>
|
||||
</Wix>
|
||||
Executable
+44
@@ -0,0 +1,44 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
DOCKER_IMAGE="fleetforge-wixl"
|
||||
|
||||
AGENT_BIN="${1:?Usage: $0 <agent-binary> <config-json> <version> <output.msi>}"
|
||||
CONFIG_JSON="${2:?Usage: $0 <agent-binary> <config-json> <version> <output.msi>}"
|
||||
VERSION="${3:?Usage: $0 <agent-binary> <config-json> <version> <output.msi>}"
|
||||
OUTPUT="${4:?Usage: $0 <agent-binary> <config-json> <version> <output.msi>}"
|
||||
|
||||
if [ ! -f "$AGENT_BIN" ]; then
|
||||
echo "Error: Agent binary not found: $AGENT_BIN" >&2
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -f "$CONFIG_JSON" ]; then
|
||||
echo "Error: Config file not found: $CONFIG_JSON" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! docker image inspect "$DOCKER_IMAGE" >/dev/null 2>&1; then
|
||||
echo "Building wixl Docker image..."
|
||||
docker build -t "$DOCKER_IMAGE" "$SCRIPT_DIR"
|
||||
fi
|
||||
|
||||
TMPDIR=$(mktemp -d)
|
||||
trap 'rm -rf "$TMPDIR"' EXIT
|
||||
|
||||
cp "$AGENT_BIN" "$TMPDIR/forge-agent.exe"
|
||||
cp "$CONFIG_JSON" "$TMPDIR/config.json"
|
||||
|
||||
sed "s/__VERSION__/$VERSION/g" "$SCRIPT_DIR/agent.wxs" > "$TMPDIR/agent.wxs"
|
||||
|
||||
echo "Compiling MSI with wixl..."
|
||||
docker run --rm \
|
||||
-v "$TMPDIR:/work" \
|
||||
"$DOCKER_IMAGE" \
|
||||
wixl -o /work/output.msi \
|
||||
-D "AgentBinaryPath=/work/forge-agent.exe" \
|
||||
-D "ConfigFilePath=/work/config.json" \
|
||||
/work/agent.wxs
|
||||
|
||||
cp "$TMPDIR/output.msi" "$OUTPUT"
|
||||
echo "MSI generated: $OUTPUT ($(du -h "$OUTPUT" | cut -f1))"
|
||||
Reference in New Issue
Block a user