fix(installer): traducir instalador a español, corregir tildes y optimizar contraste de fondos
All checks were successful
Build, MSI & Deploy / Build Docker images (push) Successful in 4m47s
Build, MSI & Deploy / Build Edge Agent Binaries (push) Successful in 7s
Build, MSI & Deploy / Deploy to Dokploy (push) Successful in 1s
Build, MSI & Deploy / Build Edge Agent MSI (push) Successful in 34s
Build, MSI & Deploy / Send notification (push) Successful in 0s

This commit is contained in:
Wilman Yesid Farfan Diaz
2026-07-11 22:21:46 -05:00
parent 24d54e79c5
commit fd3809ab1d
5 changed files with 115 additions and 111 deletions

View File

@@ -31,9 +31,9 @@ jobs:
- name: Build & Push SHA images - name: Build & Push SHA images
run: | run: |
# Build SHA tag # Build SHA tag
docker compose build docker compose -f docker-compose.build.yml build
# Push SHA tag # Push SHA tag
docker compose push docker compose -f docker-compose.build.yml push
env: env:
IMAGE_TAG: ${{ env.IMAGE_TAG }} IMAGE_TAG: ${{ env.IMAGE_TAG }}
VITE_API_URL: ${{ github.ref_name == 'main' && secrets.PROD_VITE_API_URL || secrets.DEV_VITE_API_URL }} VITE_API_URL: ${{ github.ref_name == 'main' && secrets.PROD_VITE_API_URL || secrets.DEV_VITE_API_URL }}
@@ -48,9 +48,9 @@ jobs:
- name: Build & Push Branch images - name: Build & Push Branch images
run: | run: |
# Build Branch tag (instant due to cache) # Build Branch tag (instant due to cache)
docker compose build docker compose -f docker-compose.build.yml build
# Push Branch tag # Push Branch tag
docker compose push docker compose -f docker-compose.build.yml push
env: env:
IMAGE_TAG: ${{ github.ref_name == 'main' && 'latest' || 'develop' }} IMAGE_TAG: ${{ github.ref_name == 'main' && 'latest' || 'develop' }}
VITE_API_URL: ${{ github.ref_name == 'main' && secrets.PROD_VITE_API_URL || secrets.DEV_VITE_API_URL }} VITE_API_URL: ${{ github.ref_name == 'main' && secrets.PROD_VITE_API_URL || secrets.DEV_VITE_API_URL }}
@@ -203,7 +203,7 @@ jobs:
& "$wixBin\candle.exe" -arch x64 -out "$buildDir\main.wixobj" "$buildDir\main.wxs" & "$wixBin\candle.exe" -arch x64 -out "$buildDir\main.wixobj" "$buildDir\main.wxs"
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
& "$wixBin\light.exe" -ext WixUIExtension -ext WixUtilExtension "$buildDir\main.wixobj" -o "$buildDir\edge-agent.msi" & "$wixBin\light.exe" -cultures:es-es -ext WixUIExtension -ext WixUtilExtension "$buildDir\main.wixobj" -o "$buildDir\edge-agent.msi"
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
Write-Host "MSI generado exitosamente en: $buildDir\edge-agent.msi" Write-Host "MSI generado exitosamente en: $buildDir\edge-agent.msi"
@@ -299,7 +299,8 @@ jobs:
*MSI Build (Prod):* ${MSI_RES} *MSI Build (Prod):* ${MSI_RES}
*Deploy:* ${DEPLOY_RES}" *Deploy:* ${DEPLOY_RES}"
curl -s -X POST "https://api.telegram.org/bot${{ secrets.TELEGRAM_BOT_TOKEN }}/sendMessage" \ echo "Enviando notificacion a Telegram..."
curl -i -X POST "https://api.telegram.org/bot${{ secrets.TELEGRAM_BOT_TOKEN }}/sendMessage" \
-d chat_id="${{ secrets.TELEGRAM_CHAT_ID }}" \ -d chat_id="${{ secrets.TELEGRAM_CHAT_ID }}" \
-d parse_mode="Markdown" \ -d parse_mode="Markdown" \
-d text="$MESSAGE" -d text="$MESSAGE"

View File

@@ -1,14 +1,10 @@
# ============================================================================= # =============================================================================
# OmniOil SCADA - Microservicios y Aplicaciones Frontend # OmniOil SCADA - Microservicios y Aplicaciones Frontend (Sin compilación en Prod)
# ============================================================================= # =============================================================================
services: services:
backend-api: backend-api:
restart: always restart: always
build:
context: .
dockerfile: Dockerfile.unified
target: backend-api
image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/backend-api:${IMAGE_TAG:-latest} image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/backend-api:${IMAGE_TAG:-latest}
environment: environment:
- DATABASE_URL=postgres://${DB_USER}:${DB_PASSWORD}@timescaledb:5432/${DB_NAME} - DATABASE_URL=postgres://${DB_USER}:${DB_PASSWORD}@timescaledb:5432/${DB_NAME}
@@ -59,10 +55,6 @@ services:
events-relay: events-relay:
restart: always restart: always
build:
context: .
dockerfile: Dockerfile.unified
target: events-relay
image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/events-relay:${IMAGE_TAG:-latest} image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/events-relay:${IMAGE_TAG:-latest}
environment: environment:
- DATABASE_URL=postgres://${DB_USER}:${DB_PASSWORD}@timescaledb:5432/${DB_NAME} - DATABASE_URL=postgres://${DB_USER}:${DB_PASSWORD}@timescaledb:5432/${DB_NAME}
@@ -79,10 +71,6 @@ services:
telemetry-ingestor: telemetry-ingestor:
restart: always restart: always
build:
context: .
dockerfile: Dockerfile.unified
target: telemetry-ingestor
image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/telemetry-ingestor:${IMAGE_TAG:-latest} image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/telemetry-ingestor:${IMAGE_TAG:-latest}
environment: environment:
- DATABASE_URL=postgres://${DB_USER}:${DB_PASSWORD}@timescaledb:5432/${DB_NAME} - DATABASE_URL=postgres://${DB_USER}:${DB_PASSWORD}@timescaledb:5432/${DB_NAME}
@@ -102,10 +90,6 @@ services:
json-generator: json-generator:
restart: always restart: always
build:
context: .
dockerfile: Dockerfile.unified
target: json-generator
image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/json-generator:${IMAGE_TAG:-latest} image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/json-generator:${IMAGE_TAG:-latest}
environment: environment:
- DATABASE_URL=postgres://${DB_USER}:${DB_PASSWORD}@timescaledb:5432/${DB_NAME} - DATABASE_URL=postgres://${DB_USER}:${DB_PASSWORD}@timescaledb:5432/${DB_NAME}
@@ -126,12 +110,6 @@ services:
- anh_network - anh_network
landing: landing:
build:
context: .
dockerfile: Dockerfile.frontend
target: landing
args:
- NEXT_PUBLIC_TURNSTILE_SITE_KEY=${NEXT_PUBLIC_TURNSTILE_SITE_KEY:-${VITE_TURNSTILE_SITE_KEY}}
image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/landing:${IMAGE_TAG:-latest} image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/landing:${IMAGE_TAG:-latest}
environment: environment:
- LANDING_API_PROXY_TARGET=${LANDING_API_PROXY_TARGET:-http://backend-api:8000} - LANDING_API_PROXY_TARGET=${LANDING_API_PROXY_TARGET:-http://backend-api:8000}
@@ -142,15 +120,6 @@ services:
frontend-pwa: frontend-pwa:
restart: always restart: always
build:
context: .
dockerfile: Dockerfile.frontend
target: frontend-pwa
args:
- VITE_API_BASE=/api
- VITE_ADMIN_APP_ORIGIN=${VITE_ADMIN_APP_ORIGIN}
- VITE_MOBILE_APP_ORIGIN=${VITE_MOBILE_APP_ORIGIN}
- VITE_API_URL=${VITE_API_URL}
image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/frontend-pwa:${IMAGE_TAG:-latest} image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/frontend-pwa:${IMAGE_TAG:-latest}
depends_on: depends_on:
- backend-api - backend-api
@@ -159,17 +128,6 @@ services:
frontend-admin: frontend-admin:
restart: always restart: always
build:
context: .
dockerfile: Dockerfile.frontend
target: frontend-admin
args:
- VITE_API_BASE=/api
- VITE_ADMIN_APP_ORIGIN=${VITE_ADMIN_APP_ORIGIN}
- VITE_MOBILE_APP_ORIGIN=${VITE_MOBILE_APP_ORIGIN}
- VITE_API_URL=${VITE_API_URL}
- VITE_TURNSTILE_SITE_KEY=${VITE_TURNSTILE_SITE_KEY}
- VITE_LANDING_APP_ORIGIN=${VITE_LANDING_APP_ORIGIN:-https://omnioil.app/}
image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/frontend-admin:${IMAGE_TAG:-latest} image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/frontend-admin:${IMAGE_TAG:-latest}
depends_on: depends_on:
- backend-api - backend-api
@@ -178,14 +136,6 @@ services:
frontend-console: frontend-console:
restart: always restart: always
build:
context: .
dockerfile: Dockerfile.frontend
target: frontend-console
args:
- VITE_API_BASE=/api
- VITE_CONSOLE_APP_ORIGIN=${VITE_CONSOLE_APP_ORIGIN:-https://console.omnioil.app}
- VITE_ACCESS_REQUEST_REVIEWER_EMAILS=${ACCESS_REQUEST_REVIEWER_EMAILS:-w.farfan@omnioil.app,h.ortegon@omnioil.app}
image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/frontend-console:${IMAGE_TAG:-latest} image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/frontend-console:${IMAGE_TAG:-latest}
expose: expose:
- "80" - "80"
@@ -195,12 +145,6 @@ services:
- anh_network - anh_network
build-orchestrator: build-orchestrator:
build:
context: .
dockerfile: Dockerfile.unified
target: build-orchestrator
args:
- BUILD_VERSION=${AGENT_LATEST_VERSION:-0.3.0}
image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/build-orchestrator:${IMAGE_TAG:-latest} image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/build-orchestrator:${IMAGE_TAG:-latest}
environment: environment:
- DATABASE_URL=postgres://${DB_USER}:${DB_PASSWORD}@timescaledb:5432/${DB_NAME} - DATABASE_URL=postgres://${DB_USER}:${DB_PASSWORD}@timescaledb:5432/${DB_NAME}
@@ -235,11 +179,6 @@ services:
- anh_network - anh_network
edge-agent-msi-builder: edge-agent-msi-builder:
build:
context: .
dockerfile: services/edge-agent/Dockerfile.builder
args:
- BUILD_VERSION=${AGENT_LATEST_VERSION:-0.3.0}
image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/edge-agent-msi-builder:${IMAGE_TAG:-latest} image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/edge-agent-msi-builder:${IMAGE_TAG:-latest}
volumes: volumes:
- ${INSTALLER_INCOMING:-installer_incoming}:/app/services/edge-agent/incoming - ${INSTALLER_INCOMING:-installer_incoming}:/app/services/edge-agent/incoming

95
docker-compose.build.yml Normal file
View File

@@ -0,0 +1,95 @@
# =============================================================================
# OmniOil Workspace - Configuración de Construcción (Gitea Actions)
# =============================================================================
services:
backend-api:
build:
context: .
dockerfile: Dockerfile.unified
target: backend-api
image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/backend-api:${IMAGE_TAG:-latest}
events-relay:
build:
context: .
dockerfile: Dockerfile.unified
target: events-relay
image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/events-relay:${IMAGE_TAG:-latest}
telemetry-ingestor:
build:
context: .
dockerfile: Dockerfile.unified
target: telemetry-ingestor
image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/telemetry-ingestor:${IMAGE_TAG:-latest}
json-generator:
build:
context: .
dockerfile: Dockerfile.unified
target: json-generator
image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/json-generator:${IMAGE_TAG:-latest}
landing:
build:
context: .
dockerfile: Dockerfile.frontend
target: landing
args:
- NEXT_PUBLIC_TURNSTILE_SITE_KEY=${NEXT_PUBLIC_TURNSTILE_SITE_KEY:-${VITE_TURNSTILE_SITE_KEY}}
image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/landing:${IMAGE_TAG:-latest}
frontend-pwa:
build:
context: .
dockerfile: Dockerfile.frontend
target: frontend-pwa
args:
- VITE_API_BASE=/api
- VITE_ADMIN_APP_ORIGIN=${VITE_ADMIN_APP_ORIGIN}
- VITE_MOBILE_APP_ORIGIN=${VITE_MOBILE_APP_ORIGIN}
- VITE_API_URL=${VITE_API_URL}
image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/frontend-pwa:${IMAGE_TAG:-latest}
frontend-admin:
build:
context: .
dockerfile: Dockerfile.frontend
target: frontend-admin
args:
- VITE_API_BASE=/api
- VITE_ADMIN_APP_ORIGIN=${VITE_ADMIN_APP_ORIGIN}
- VITE_MOBILE_APP_ORIGIN=${VITE_MOBILE_APP_ORIGIN}
- VITE_API_URL=${VITE_API_URL}
- VITE_TURNSTILE_SITE_KEY=${VITE_TURNSTILE_SITE_KEY}
- VITE_LANDING_APP_ORIGIN=${VITE_LANDING_APP_ORIGIN:-https://omnioil.app/}
image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/frontend-admin:${IMAGE_TAG:-latest}
frontend-console:
build:
context: .
dockerfile: Dockerfile.frontend
target: frontend-console
args:
- VITE_API_BASE=/api
- VITE_CONSOLE_APP_ORIGIN=${VITE_CONSOLE_APP_ORIGIN:-https://console.omnioil.app}
- VITE_ACCESS_REQUEST_REVIEWER_EMAILS=${ACCESS_REQUEST_REVIEWER_EMAILS:-w.farfan@omnioil.app,h.ortegon@omnioil.app}
image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/frontend-console:${IMAGE_TAG:-latest}
build-orchestrator:
build:
context: .
dockerfile: Dockerfile.unified
target: build-orchestrator
args:
- BUILD_VERSION=${AGENT_LATEST_VERSION:-0.3.0}
image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/build-orchestrator:${IMAGE_TAG:-latest}
edge-agent-msi-builder:
build:
context: .
dockerfile: services/edge-agent/Dockerfile.builder
args:
- BUILD_VERSION=${AGENT_LATEST_VERSION:-0.3.0}
image: ${GITEA_REGISTRY:-gitea.kyrbot.com}/${GITEA_IMAGE_NAMESPACE:-kyrbot}/edge-agent-msi-builder:${IMAGE_TAG:-latest}

View File

@@ -39,44 +39,22 @@ def generate_assets():
# ---------------------------------------------------- # ----------------------------------------------------
# 1. Generar dialog.bmp (493x312) - Bienvenida/Finalizacion # 1. Generar dialog.bmp (493x312) - Bienvenida/Finalizacion
# ---------------------------------------------------- # ----------------------------------------------------
img_dialog = Image.new("RGB", (493, 312), color_bg) # El fondo general es blanco para que el texto de WiX sea legible.
# El panel de la izquierda es el panel corporativo oscuro con el logo.
img_dialog = Image.new("RGB", (493, 312), (255, 255, 255))
draw_dialog = ImageDraw.Draw(img_dialog) draw_dialog = ImageDraw.Draw(img_dialog)
# Dibujar panel lateral con gradiente o color primario # Dibujar panel lateral oscuro corporativo
draw_dialog.rectangle([0, 0, 164, 312], fill=(15, 20, 28)) # Un azul ligeramente mas claro draw_dialog.rectangle([0, 0, 164, 312], fill=(9, 11, 15))
draw_dialog.rectangle([162, 0, 164, 312], fill=color_primary) # Linea naranja divisoria # Linea naranja divisoria
draw_dialog.rectangle([162, 0, 164, 312], fill=color_primary)
# Colocar logo en el panel lateral # Colocar logo en el panel lateral
if logo: if logo:
# Redimensionar logo para el panel lateral (120x120)
logo_dialog = logo.resize((120, 120), Image.Resampling.LANCZOS) logo_dialog = logo.resize((120, 120), Image.Resampling.LANCZOS)
# Pegar con canal alfa # Pegar con canal alfa
img_dialog.paste(logo_dialog, (22, 96), logo_dialog) img_dialog.paste(logo_dialog, (22, 96), logo_dialog)
# Textos principales (Usamos fuentes estandar para evitar fallos si no existe Geist)
try:
font_title = ImageFont.truetype("arial.ttf", 20)
font_subtitle = ImageFont.truetype("arial.ttf", 12)
font_body = ImageFont.truetype("arial.ttf", 10)
except IOError:
font_title = ImageFont.load_default()
font_subtitle = ImageFont.load_default()
font_body = ImageFont.load_default()
draw_dialog.text((185, 30), "OmniOil Analytics", fill=color_primary, font=font_title)
draw_dialog.text((185, 55), "Edge Agent Setup Wizard", fill=color_text, font=font_title)
body_text = (
"Este asistente instalara el componente de telemetria\n"
"Edge Agent en su equipo local.\n\n"
"El agente se ejecutara como un servicio de Windows en\n"
"segundo plano para recolectar y reportar datos industriales\n"
"bajo los lineamientos de la Resolucion ANH 0651/2025.\n\n"
"Desarrollado por KYRBOT INNOVATIONS S.A.S.\n"
"NIT 902002081-8"
)
draw_dialog.text((185, 110), body_text, fill=color_muted, font=font_body)
# Guardar como BMP de 24 bits # Guardar como BMP de 24 bits
img_dialog.save(dialog_bmp_path, "BMP") img_dialog.save(dialog_bmp_path, "BMP")
print(f"dialog.bmp generado exitosamente en {dialog_bmp_path}") print(f"dialog.bmp generado exitosamente en {dialog_bmp_path}")
@@ -84,7 +62,8 @@ def generate_assets():
# ---------------------------------------------------- # ----------------------------------------------------
# 2. Generar banner.bmp (493x58) - Banner superior interno # 2. Generar banner.bmp (493x58) - Banner superior interno
# ---------------------------------------------------- # ----------------------------------------------------
img_banner = Image.new("RGB", (493, 58), color_bg) # Fondo blanco para que los titulos de las paginas internas de WiX sean legibles.
img_banner = Image.new("RGB", (493, 58), (255, 255, 255))
draw_banner = ImageDraw.Draw(img_banner) draw_banner = ImageDraw.Draw(img_banner)
# Linea naranja inferior # Linea naranja inferior
@@ -95,16 +74,6 @@ def generate_assets():
logo_banner = logo.resize((42, 42), Image.Resampling.LANCZOS) logo_banner = logo.resize((42, 42), Image.Resampling.LANCZOS)
img_banner.paste(logo_banner, (435, 8), logo_banner) img_banner.paste(logo_banner, (435, 8), logo_banner)
try:
font_banner_title = ImageFont.truetype("arial.ttf", 12)
font_banner_sub = ImageFont.truetype("arial.ttf", 9)
except IOError:
font_banner_title = ImageFont.load_default()
font_banner_sub = ImageFont.load_default()
draw_banner.text((15, 12), "OmniOil Edge Agent", fill=color_primary, font=font_banner_title)
draw_banner.text((15, 28), "Configuracion de Telemetria Industrial", fill=color_text, font=font_banner_sub)
# Guardar como BMP de 24 bits # Guardar como BMP de 24 bits
img_banner.save(banner_bmp_path, "BMP") img_banner.save(banner_bmp_path, "BMP")
print(f"banner.bmp generado exitosamente en {banner_bmp_path}") print(f"banner.bmp generado exitosamente en {banner_bmp_path}")

View File

@@ -3,7 +3,7 @@
<Product Name='OmniOil Edge Agent' <Product Name='OmniOil Edge Agent'
Id='*' Id='*'
UpgradeCode='6F9619FF-8B49-4D6C-8D4C-9B6C24B55FCD' UpgradeCode='6F9619FF-8B49-4D6C-8D4C-9B6C24B55FCD'
Language='1033' Language='1034'
Codepage='1252' Codepage='1252'
Version='0.3.0' Version='0.3.0'
Manufacturer='OmniOil'> Manufacturer='OmniOil'>
@@ -14,12 +14,12 @@
Comments='Edge computing agent for OmniOil' Comments='Edge computing agent for OmniOil'
Manufacturer='OmniOil' Manufacturer='OmniOil'
InstallerVersion='200' InstallerVersion='200'
Languages='1033' Languages='1034'
Compressed='yes' Compressed='yes'
SummaryCodepage='1252' SummaryCodepage='1252'
Platform='x64' /> Platform='x64' />
<MajorUpgrade DowngradeErrorMessage="Una versión más reciente de [ProductName] ya está instalada." /> <MajorUpgrade DowngradeErrorMessage="Una version mas reciente de [ProductName] ya esta instalada." />
<Media Id='1' Cabinet='Sample.cab' EmbedCab='yes' DiskPrompt="CD-ROM #1" /> <Media Id='1' Cabinet='Sample.cab' EmbedCab='yes' DiskPrompt="CD-ROM #1" />
<Property Id='DiskPrompt' Value="OmniOil Edge Agent Installation [1]" /> <Property Id='DiskPrompt' Value="OmniOil Edge Agent Installation [1]" />