b149323045
Implementacion Go pura sin dependencias externas (sin rcedit, wine, ni rsrc). Parsea ICONDIR + ICONDIRENTRY del .ico, construye un IMAGE_RESOURCE_DIRECTORY tree con RT_ICON + RT_GROUP_ICON, y appendea una nueva seccion .rsrc al PE. Soporta PE32 y PE32+. No soporta exe que ya tienen recursos (retorna error). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1.9 KiB
1.9 KiB
name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
| name | kind | lang | domain | version | purity | signature | description | tags | uses_functions | uses_types | returns | returns_optional | error_type | imports | params | output | tested | tests | test_file_path | file_path | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| set_exe_icon | function | go | infra | 1.0.0 | impure | func SetExeIcon(exePath, icoPath string) error | Embebe un icono (.ico multi-tamaño) en un ejecutable PE Windows post-build. Implementacion Go pura sin dependencias externas (sin rcedit/wine/rsrc). Parsea el ICONDIR + ICONDIRENTRY del .ico, construye un IMAGE_RESOURCE_DIRECTORY tree con RT_ICON + RT_GROUP_ICON, y appendea una nueva seccion .rsrc al PE. Soporta PE32 y PE32+. No soporta exe que ya tienen recursos (retorna error). |
|
false | error_go_core |
|
|
nil si el icono se embebio correctamente; error si el .exe ya tiene recursos, no es PE valido, o el .ico es invalido | false | functions/infra/set_exe_icon.go |
Ejemplo
err := infra.SetExeIcon("myapp.exe", "logo.ico")
if err != nil {
log.Fatal(err)
}
Notas
- Solo Go binaries cross-compiled a Windows que no tengan seccion
.rsrcprevia. La mayoria de binarios Go limpios no la tienen. - Si el .exe ya tiene recursos (creado con
goversioninfo,rsrc, MSVC, etc.), retorna error y no modifica el archivo. - El checksum del PE se pone a 0 tras la modificacion (Windows lo ignora para .exe normales; firmas Authenticode quedarian invalidadas).
- Soporta multi-resolucion: si el .ico tiene 16x16, 32x32, 256x256... todos se embeben y Windows elige el mejor.
- El icono cambia tras refrescar la cache de iconos de Explorer (a veces requiere
ie4uinit -showo reiniciar Explorer).