0 votos

Actualizar aplicación desde DMG: comprobar versiones

Descargo DMG con mi aplicación y actualizar mi aplicación usándolo.

Estoy usando el siguiente bash script para esto:

set -e
/usr/bin/hdiutil attach "mydmg.dmg" -mountPoint "/Volumes/My update" -nobrowse
rm -rf "/Applications/My.app/Contents"
mkdir "/Applications/My.app/Contents"
cp -R "/Volumes/My update/My.app/Contents" "/Applications/My.app"
set +e
/sbin/umount "/Volumes/My update"

Lo que me gustaría es ajustar este script para que devuelva un error en caso de que la versión de la app dentro de DMG es menor que el de la aplicación actualmente instalada.

Esto puede conseguirse comparando dos versiones dentro de Info.plist archivos ( CFBundleVersion de la aplicación instalada y el de DMG.

Por desgracia, soy un novato en macOS y bash . Me gustaría obtener un ejemplo de código sobre cómo hacer esto (si es posible por favor :) ).

Por si acaso: Info.plist es un archivo que se encuentra dentro de cada paquete de aplicaciones MacOS. Se encuentra en la siguiente carpeta: My.app/Contents/Info.plist .

2voto

WGroleau Puntos 255

No una solución completa, pero he aquí algunas ideas:

Algunos plists son XML y otros binarios. man plutil le indicará cómo convertir un binario a XML.

Lo que probablemente quieres es esta sección en la versión XML:

      <key>CFBundleVersion</key>
      <string>18615.1.26.11.23</string>

¿Puedes encontrar la manera de encontrar una línea en un archivo y leer la línea que le sigue?

cat /Applications/Safari.app/Contents/Info.plist | while read VERSION; do
  if [ "$PREVIOUS" =~ ".*CFBundleVersion.*" ]
  then
    echo $VERSION; break
  fi
  PREVIOUS=$VERSION
done

Cuando ese bucle sale, esperaba que $VERSION fuera el número de versión completo de Safari. Pero lo probé y no funcionó.

ACTUALIZACIÓN: Según la sugerencia de @nohillside, todo el bucle que sugerí puede sustituirse por

VERSION=$(defaults read /Applications/Safari.app/Contents/Info.plist CFBundleVersion)

También probado, y es hizo trabajo.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X