Windows MSI: Change/Modify cannot add the optional Netdata Driver (netdata_driver.sys) to an existing install
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 72/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Tranquilo
- Stack tecnológico
- xml
- Área
- build-system
Línea de trabajo
Comienza en packaging/windows/netdata.wxs.in, centrándote en MaintenanceTypeDlg, VerifyReadyDlg, NDConfigDialog y NDComponentSelection alrededor de las líneas 376–406 y 511. Compila el Windows MSI y prueba el flujo Change con una instalación existente. Se considera terminado cuando el flujo llega a la casilla del controlador y puede añadir netdata_driver.sys y netdata_driver.inf sin desinstalar.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
The Windows MSI installer's "Change" (Modify) maintenance flow cannot be used to add the optional Netdata Driver (netdata_driver.sys, required for cpu.temperature/GetHardwareInfo) to an already-installed Netdata. The only way to add the driver today is to fully uninstall and reinstall Netdata.
Root cause
In packaging/windows/netdata.wxs.in:
- The driver files are gated by a file-level condition:
Condition="NDDRVINST=1"onnetdata_driver.sys/netdata_driver.inf(lines 282, 284), insideFeatureGroup Id="NetdataDriver"referenced from the single top-levelFeature Id="Main". - The checkbox that sets
NDDRVINST(NDDriverCBX, line 511) lives on theNDComponentSelectiondialog, which is reachable only viaViewLicenseDlg → NDComponentSelection, itself reachable only viaWelcomeDlg.Next, gated byCondition="NOT Installed"(line 376) — i.e. only on a fresh install. - During a maintenance run,
MaintenanceTypeDlg'sChangeButtonis published straight toVerifyReadyDlg(line 403), bypassing the feature dialogs entirely. Compare with upstream WiX's stockWixUI_FeatureTree.wxs, whereChangeButtonroutes directly toCustomizeDlg(the feature-tree/customize screen). - The one theoretical way back into the feature dialogs —
VerifyReadyDlg'sBackbutton routing toNDConfigDialogwhenWixUI_InstallMode = "Change"(line 399, inherited verbatim from the upstream pattern) — never fires, because nothing in this custom UI fragment ever sets theWixUI_InstallModeproperty (it appears exactly once in the whole file, only as a read in that oneCondition).
Net effect: clicking Change in the maintenance dialog goes straight to a "ready to modify" confirmation screen with no way to reach the checkbox, and Back from there only loops to the maintenance type selector.
Impact
A user who installed Netdata without the driver, and later wants CPU temperature monitoring, cannot enable it via the installer's Modify/Change option — they must uninstall and reinstall Netdata from scratch. This is non-obvious and easy to miss (no error is shown; the checkbox visually just isn't there in Change mode).
Suggested fix (one of)
- Set
WixUI_InstallModeto"Change"onMaintenanceTypeDlg'sChangeButton(mirroring the upstreamWixUI_FeatureTree.wxspattern), so the existingVerifyReadyDlg.Back → NDConfigDialogcondition (line 399) actually fires. - Or route
ChangeButtondirectly toNDConfigDialog/NDComponentSelection, matching how upstream routesChangeButtonstraight toCustomizeDlg.
Possible command-line workaround (untested, worth verifying)
msiexec /i netdata-x64.msi NDDRVINST=1 REINSTALL=ALL REINSTALLMODE=amus (or similar REINSTALLMODE flags) may force Windows Installer to re-evaluate the file-level condition and add the driver files to an existing install without a full uninstall, since Windows Installer conditions are re-evaluated on CostFinalize using the properties passed on that invocation. This wasn't tested against this specific package (no Windows box available) — worth confirming on real hardware before recommending it to users. Note that ADDLOCAL=NetdataDriver alone will not work: NetdataDriver is a WiX FeatureGroup, not a real MSI Feature — the compiled MSI's Feature table only contains Main.
Evidence
packaging/windows/netdata.wxs.in:181-186—DRIVERDIR/INFDIRresolve to%SystemRoot%\system32\drivers\and%SystemRoot%\INF\, matching the pathsrc/collectors/windows.plugin/GetHardwareInfo.c:9checks.packaging/windows/netdata.wxs.in:281-286— driver file conditions.packaging/windows/netdata.wxs.in:376-406— dialog navigation chain.packaging/windows/netdata.wxs.in:511—NDDriverCBXcheckbox onNDComponentSelection.src/collectors/windows.plugin/GetHardwareInfo.c:88-231— the actual SCMCreateServiceA/StartServiceAcalls run inside the collector at Agent startup, not as an MSI custom action, so file presence on disk is the only thing the installer needs to get right.
Surfaced while reviewing/fixing PR #23200.
- Lenguaje dominante
- Go
- Estrellas
- 80.6k
- Forks
- 6.6k
- Merge medio
- 15 h 35 min
- PR fusionados (30 d)
- 305
Preparar el entorno
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de netdata/netdata
-
bug needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
netdata/netdata#24062 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
area/docs area/packaging bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
netdata/netdata#23398 · 2 reacciones ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
netdata/netdata#22786 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug needs triage
Dificultad 4/5 3-5 días Aptitud para principiantes 66/100
netdata/netdata#24067 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de netdata/netdata
Issues similares
-
Remove CAAPFAbiertokind/chore kind/cleanup needs-area
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
rancher/turtles#2848 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día
-
priority: low 🌱 type: enhancement 💅🏼
Dificultad 2/5 Medio día Aptitud para principiantes 84/100
nebari-dev/llm-serving-pack#199 ·
Los mantenedores suelen responder en 3 días
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
kedacore/keda#8225 · 1 comentario ·
Los mantenedores suelen responder en 1 día