Question

Titre. Il est autorisé à enregistrer sur un certain répertoire, mais y a-t-il un moyen de faire un exécutable fabriqué avec lui-même lui-même? J'ai le code pour vérifier s'il est obsolète (httpget), mais je ne sais pas comment intaller la mise à jour la plus récente.

La raison principale est que les gens se plaignent de devoir relocaliser à plusieurs reprises mon RPG. Serait-il plus facile de l'emballer avec un C # Auto-upDater qu'ils peuvent fonctionner?

Était-ce utile?

La solution

Vous ne pouvez pas faire le fichier .love "Mise à jour lui-même". Ce n'est pas possible, sauf si vous utilisez le gestionnaire de packages du système opérationnel ou quelque chose de similaire (APT-Get dans Ubuntu, l'App Store sur Mac et tout ce que Microsoft utilise, si elle l'a).

Si vous ne voulez pas faire cela, la deuxième meilleure façon de faire ce travail serait de faire de votre exécutable Love2D un "shell"; Un "jeu vide" qui télécharge simplement des trucs à partir d'Internet, et plus tard exécute une fonction qui initialise tout, y compris le jeu approprié.

Comme le dit JPJACOBS, vous pouvez télécharger des choses à partir du Web à l'aide de Luasocket (qui est déjà incluse dans Löve 0.7). Par exemple, c'est ainsi que vous téléchargez un PNG (j'ai copié le code de ici):

if not love.filesystem.exists("expo.png") then
  local http = require("socket.http")
  local b, c, h = http.request("http://love2d.org/w/images/e/e3/Resource-AnalExplosion.png")
  love.filesystem.write("expo.png", b)
end

Il existe également un moyen de débarrasser des données à l'aide de l'algorithme GNU UNSIP à l'aide de Lua pure. Il est mis en œuvre par le /AdvTiledLoader/external/gunzip.lua déposer Tileloader avancé de Kadoba.

Donc je suppose que vous pouvez faire un jeu qui:

  1. Commence par lire un fichier appelé version.lua, et le comparant à un fichier de votre serveur (http://www.your-server.com/latest-version-mber). Ce fichier contient simplement un nombre, comme "48".
  2. Si aucun fichier et serveur ne pouvaient être contactés, l'erreur "ne pourrait pas télécharger le jeu".
  3. Si pas de fichier ou de version actuelle <dernière version du serveur, téléchargez le fichier zip depuis le serveur (http://www.your-server.com/latest.zip)
  4. Si le dernier.zip a téléchargé avec succès, effacez tout dans le répertoire / le dernier répertoire et non compressé Dernerst.zip sur le nouveau dernier. Mettre à jour la version.lua avec la nouvelle version (retour 48)
  5. Détectez quand vous travaillez hors ligne - si vous ne pouvez pas télécharger le dernier.zip ou la version, mais il y a déjà une version.lua et le dernier dossier, donnez un avertissement, pas une erreur.
  6. Nécessitent le fichier qui contient le vrai jeu; Probablement quelque chose comme require 'latest.main'

Remarques:

  • Je ne connais pas Luasocket. Il est possible qu'il existe un moyen d'obtenir la date de la «dernière mise à jour» de http://www.your-server.com/latest.zip, afin que vous puissiez simplement vous débarrasser des trucs de la dernière version.
  • Je n'ai pas utilisé gunzip.lua moi-même. Je ne sais pas comment il gère plusieurs fichiers ou répertoires.

Autres conseils

Ma première supposition serait d'utiliser Luasocket. Vous pouvez avoir un petit fichier contenant le numéro de version actuel, le faire télécharger au démarrage, puis décider si une mise à niveau est nécessaire ou non.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top