Creé un archivo AppleScript .scpt en Script Debugger.app.
Así es como asigné un ícono personalizado a este archivo .scpt:
Descargué un ícono único (en el formato "512px PNG") de IconArchive.com .
Abrí el archivo .png con Preview.app. En Vista previa, hice clic en Edit⟶ Copypara colocar esta imagen en mi portapapeles.
Abrí la Get Infoventana del archivo .scpt en Finder. Hice clic izquierdo en el icono predeterminado, que se encuentra en la esquina superior izquierda de la Get Infoventana. A continuación, apareció un contorno azul alrededor del icono predeterminado, lo que refleja que se seleccionó el icono.
Finalmente, pegué el ícono personalizado sobre el ícono predeterminado a través del atajo de teclado, ⌘ command+ V. El icono personalizado se configuró de inmediato. Cerré por la Get Infoventana.
Cuando abro el archivo .scpt en Script Debugger, para editar el código y luego vuelvo a guardar el archivo .scpt, el ícono personalizado desaparece.
Al guardar, el siguiente icono ocupa inmediatamente el lugar del icono personalizado:
(Este es el ícono predeterminado de OS X para archivos .scpt).
Por supuesto, tener que pasar por el proceso de configurar el ícono personalizado cada vez que guardo (es decir, edito) el archivo es un inconveniente.
Pero también hay un segundo error corolario: cada vez que vuelvo a agregar el icono personalizado en la Get Infoventana, el tamaño del archivo .scpt aumenta acumulativamente. En otras palabras, cuando Script Debugger elimina el icono del archivo personalizado, el tamaño del archivo del icono todavía se incluye, de alguna manera, como parte del tamaño general del archivo .scpt.
Caso en cuestión: el tamaño del archivo .scpt en cuestión es de 12,6 MB, en este momento. El archivo no debe tener más de 0,5 MB.
Entiendo cómo configurar un ícono de archivo personalizado en un archivo AppleScript .app , de modo que este ícono personalizado permanezca en su lugar después de la edición , pero tengo curiosidad por saber si se puede hacer lo mismo para un archivo .scpt.
¿Hay alguna forma de que mi ícono de secuencia de comandos personalizada permanezca en su lugar, incluso después de que el archivo .scpt se haya modificado en el depurador de secuencias de comandos?
Este es un archivo .scpt que se inicia a través del menú desplegable de la barra de menú FastScripts.app. (El archivo .scpt se encuentra en /Users/Me/Library/Scripts
.) El menú desplegable FastScripts en realidad muestra los íconos de archivo de los scripts , lo cual es una buena característica. Esta es la razón por la que quiero establecer un ícono personalizado en el archivo .scpt (es decir, para poder observar un ícono apropiado en el menú contextual de FastScripts).
No, no es un gran problema simplemente convertir los archivos .scpt de AppleScript que quiero que tengan un icono de archivo personalizado en archivos .app de AppleScript. Hago esta pregunta solo para ver si hay algo que me estoy perdiendo o pasando por alto aquí.
Parece que este error es exclusivo de Script Debugger .
Cuando sigo los mismos pasos en el programa de edición nativo de AppleScript de OS X, Script Editor.app , el ícono del archivo .scpt permanece intacto, al guardar. Sin embargo, podría haber jurado que, de hecho, experimenté este problema en el Editor de secuencias de comandos en el pasado.
Por ejemplo, recuerdo que, una vez, Script Editor se negó a guardar un archivo .scpt que yo había editado; se presentó un cuadro de diálogo de error vago en Guardar. Para guardar correctamente el archivo, tuve que eliminar el icono personalizado de la Get Infoventana del Finder o copiar el texto del código y pegarlo en un nuevo archivo .scpt (que, por supuesto, necesariamente tendría el icono de archivo .scpt predeterminado).
Pero, en este momento, ya no puedo reproducir el error en el Editor de secuencias de comandos.
En cualquier caso, trato de no usar el Editor de secuencias de comandos para editar mis AppleScripts nunca más. Esto se debe a que el Editor de secuencias de comandos es lento , puede fallar al usar una biblioteca de secuencias de comandos de terceros y puede ser temperamental cuando se trata de abrir y guardar archivos.
En mi experiencia, hasta ahora, Script Debugger no tiene ninguno de estos problemas.
Por supuesto, Script Debugger tiene al menos un problema (es decir, el problema detallado en esta publicación).
OS X El Capitán, versión 10.11.6.
En términos generales, cuando un usuario asigna un icono personalizado a un archivo copiando y pegando un archivo de imagen en el icono, en la esquina superior izquierda, en la hoja Obtener información del archivo, el archivo de imagen se almacena como un com.apple.ResourceFork
atributo extendido del archivo al que pertenece. aplicado y se puede ver en la Terminal usando ls -l@ filename.ext
para mostrar que el archivo tiene atributos extendidos . Para manipular los atributos extendidos , use la xattr
utilidad en Terminal. Tenga en cuenta que el uso del término archivo de imagen en este contacto es cualquier fuente válida copiada en el Portapapeles para luego pegarse en la hoja Obtener información.
Tener que volver a aplicar el archivo de icono después de haber guardado el archivo .scpt en Script Debugger hace que el com.apple.ResourceFork
atributo extendido continúe creciendo en tamaño, mientras que posiblemente pierda el acceso a los archivos de icono acumulados, no puedo decirlo con seguridad porque no he hecho lo suficiente. pruebas. Desafortunadamente, aunque Script Editor mantiene el archivo de icono personalizado, parece que también aumenta el tamaño del com.apple.ResourceFork
atributo extendido .
Para reducir el tamaño del archivo eliminando específicamente los com.apple.ResourceFork
atributos extendidos , use la siguiente sintaxis de comando en la Terminal:
xattr -d com.apple.ResourceFork filename.ext
Luego vuelva a aplicar el icono personalizado al archivo.
Eche un vistazo a la página de manual de xattr
Terminal escribiendo xattr
y luego haga clic con el botón derecho en ella seleccionando Abrir página de manual en el menú contextual.
El problema con el restablecimiento del depurador de scripts al ícono predeterminado probablemente tendrá que abordarse con el desarrollador, o usar la solución alternativa sugerida en la respuesta de wch1zpink.
Dado que el com.apple.ResourceFork
atributo extendido crece independientemente de las aplicaciones que use, Editor de secuencias de comandos o Depurador de secuencias de comandos, este es un problema que Apple debe abordar.
Sé que está utilizando OS X El Capitan 10.11.6, sin embargo, lo probé en macOS Sierra 10.12.5 y el comportamiento aparentemente es el mismo, probablemente no importe que lo haya probado en una versión posterior del sistema operativo. Estaba usando Script Debugger 6.0.4.
Debido a la repetitividad de lo que está haciendo, aquí se necesita una solución con secuencias de comandos para reducir el esfuerzo necesario para mantener un tamaño de archivo pequeño, incluidos sus atributos extendidos , y el icono personalizado.
Actualizar:
Después de haber seguido un camino similar, en OS X 10.8.5, con la configuración programática del ícono de un archivo y después de haber probado casi todas las soluciones presentadas en ¿Cómo puedo cambiar un ícono de archivo o carpeta usando la Terminal ? Elegí usar setfileicon
de esta respuesta , ya que redactó lo mejor para mis necesidades en ese momento.
El siguiente código AppleScript es un código de ejemplo que puede eliminar mediante programación el com.apple.ResourceFork
atributo extendido del archivo de destino para reducir su tamaño acumulativo y restablecer el icono del archivo de destino. Está escrito sobre el uso de la solución alternativa sugerida en la respuesta de wch1zpink, que hace referencia al bloqueo del archivo para mantener el ícono intacto durante un guardado en Script Debugger.
El objetivo principal de este código de ejemplo es mostrar cómo eliminar el com.apple.ResourceFork
atributo extendido del archivo de destino y restablecer su icono personalizado mediante programación. He incluido el código para desbloquear/bloquear el archivo de destino si elige usar ese método para mantener el ícono intacto entre guardados, si no, puede eliminarse. Supongo que solo depende de la frecuencia con la que desee restablecer el tamaño del com.apple.ResourceFork
atributo extendido del archivo de destino .
tell current application
set theTargetFilename to "filename.scpt" as string
set theHomeFolderPath to (path to home folder) as string
set theScriptsFolder to (path to scripts folder) as string
set theTargetFilePathname to theScriptsFolder & theTargetFilename as alias
set theTargetIcon to quoted form of (POSIX path of (theHomeFolderPath & "bin:icon.icns") as string)
set theTargetExecutable to quoted form of (POSIX path of (theHomeFolderPath & "bin:setfileicon") as string)
tell application "Finder" to set locked of theTargetFilePathname to false
do shell script "xattr -d com.apple.ResourceFork " & quoted form of (POSIX path of theTargetFilePathname) & "; exit 0"
do shell script theTargetExecutable & " " & theTargetIcon & " " & quoted form of (POSIX path of theTargetFilePathname)
tell application "Finder" to set locked of theTargetFilePathname to true
end tell
Notas:
A los efectos de este código de ejemplo, he colocado la setfileicon
utilidad de línea de comandos y icon.icns
los archivos de destino en la carpeta bin dentro de la raíz de mi carpeta de inicio . El icon.icns
archivo es el archivo .icns del vinculado en su pregunta. Puede usar el archivo PNG , sin embargo, creo que el archivo .icns produce una mejor imagen.
El script podría estar más codificado y no tan detallado, sin embargo, lo codifiqué de esta manera por algunas razones de las cuales no voy a entrar en detalles a menos que necesite una explicación. Siéntase libre de utilizar el código de ejemplo para implementar una solución funcional según sea necesario o deseado en su entorno.
Esto se probó en macOS Sierra 10.12.5, sin embargo, también debería funcionar en OS X El Capitan 10.11.6.
com.apple.ResourceFork
destino es aumentado innecesariamente de tamaño. Como tal, incorporar esto en el código de una secuencia de comandos/aplicación no va a hacer nada de valor ya que no existe ningún mecanismo, que yo sepa, desde el Depurador de secuencias de comandos o el Editor de secuencias de comandos, para activar el código solo en la secuencia de comandos/ aplicación que tiene un icono personalizado después de guardarse en cualquiera de las dos aplicaciones.En realidad hay una solución. Descargué el archivo .icns desde el enlace que proporcionó. Luego arrastré todo el archivo .icns desde la ventana del Finder hasta la imagen del ícono en la ventana Obtener información del script que creé en la aplicación Script Debugger. Después de configurar el nuevo ícono, seleccioné la opción para "bloquear archivo" en la ventana Obtener información.
Después de esto, abrí ese script nuevamente en la aplicación Script Debugger e hice algunos cambios en el script, volví a compilar el script y lo volví a guardar. Cuando intenté guardarlo de nuevo, recibí esta ventana de mensaje.
¡Seleccioné la opción "Guardar Ayway" y BINGO! Las ediciones se guardaron pero el ícono personalizado permaneció sin cambios.
Aquí hay una sugerencia de que tal vez alguien pueda agarrar la pelota y correr con ella. En lugar de guardarlo como un archivo de secuencia de comandos en el depurador de secuencias de comandos, guárdelo como un paquete de secuencias de comandos (.scptd). Después de hacer esto, ctrl + clic en ese archivo en el buscador y seleccione "Mostrar contenido del paquete". Agregue su archivo .icns personalizado a la carpeta Recursos. También notará un archivo info.plist. Abra el archivo info.plist en Xcode. Si presiona el botón + en la fila de la lista de propiedades de información, le da la opción de agregar archivos de iconos.
Esto está por encima del alcance de mi conocimiento, pero tal vez de alguna manera el archivo de iconos personalizados se pueda configurar aquí.
com.apple.ResourceFork
atributo extendido del archivo continúa creciendo cada vez que se guarda. Por lo tanto, periódicamente será necesario eliminar el com.apple.ResourceFork
atributo extendido y restablecer el icono. El archivo deberá estar desbloqueado para hacer esto, ya que incluso el uso sudo
no evitará el bloqueo.
Extraño caminante
esfera de rubik
Extraño caminante
esfera de rubik