Arreglando la advertencia "falta un recurso sellado o no es válido"

5

He cambiado el icono de la aplicación de mi editor de Eclipse, y esto hace que aparezca un cuadro de diálogo de confirmación que me pregunta si permito que el programa acepte conexiones de red entrantes. Me enfrenté a esto antes, pero luego, de alguna manera me deshice de él. Ahora no puedo más.

Aquí está la salida de la codesign utilidad:

$ codesign -vv /Applications/Indigo/Eclipse.app/
/Applications/Indigo/Eclipse.app/: a sealed resource is missing or invalid
/Applications/Indigo/Eclipse.app/Contents/Resources/Eclipse.icns.bak: resource missing

¿Alguien sabe como puedo? totalmente desinstale Eclipse para que el sistema operativo se olvide de ese archivo "Eclipse.icns.bak"?

¡Gracias!

Ionuț G. Stan
fuente

Respuestas:

1

Ok, me las arreglé para hacer esto. Está sucio pero bastante seguro hasta ahora.

La base de datos que contiene esa información se encuentra bajo /var/db/DetachedSignatures. Esta es una base de datos SQLite, por lo que puede modificarse fácilmente con la herramienta sqlite3 incorporada. Aquí hay una sesión de ejemplo que elimina las entradas que coinciden con la palabra clave "eclipse":

# we're using sudo, so be careful
$ sudo sqlite /var/db/DetachedSignatures

# what tables does it contain?
sqlite> .tables
code global

# what are the column definitions in code?
sqlite> .schema code
CREATE TABLE code ( 
        id integer primary key on conflict replace autoincrement not null, 
        global integer null references global (id), 
        identifier text not null, 
        architecture integer, 
        identification blob not null unique on conflict replace, 
        signature blob not null, 
        created text default current_timestamp 
    );
CREATE INDEX architecture_index on code (architecture);
CREATE INDEX id_index on code (identification);
CREATE INDEX identifier_index on code (identifier);


# what are the column definitions in global?
sqlite> .schema global
CREATE TABLE global ( 
        id integer primary key on conflict replace autoincrement not null, 
        sign_location text not null, 
        signature blob null 
    );
CREATE INDEX location_index on global (sign_location);

Lo que nos interesa son code.identifier y global.sign_location.

sqlite> SELECT * FROM code WHERE identifier LIKE "%eclipse%";
sqlite> SELECT * FROM global WHERE sign_location LIKE "%eclipse%";

Eche un vistazo y haga una copia de seguridad antes de eliminar todas las entradas coincidentes de ambas consultas.

sqlite> DELETE FROM code WHERE identifier LIKE "%eclipse%";
sqlite> DELETE FROM global WHERE sign_location LIKE "%eclipse%";

También he reiniciado mi computadora portátil, aunque no sé si es realmente necesario.

¡Eso es todo!

Ionuț G. Stan
fuente
0

Otra solución sería reemplazar la firma de código no válida por una nueva:

sudo codesign --force --sign - /Applications/SomeApp.app
Lri
fuente