Gegevensdirectory op Windows

Bij het schrijven van een spel voeg je altijd een aantal gegevens toe (afbeeldingen, geluiden, ...). Op Unix-achtige systemen installeer ik ze meestal in $ {PREFIX} /share/ project /data waarbij $ {PREFIX} mogelijk wordt beheerd door de bouw systeem zoals CMake of autotools.

In dit geval is het eenvoudig om de gegevensdirectory rechtstreeks in te stellen met een aantal #define die automatisch door het buildsysteem worden gegenereerd.

In Windows heb ik absoluut geen idee hoe ik de datadirectory kan vinden, omdat het installatieprogramma van applicaties altijd vraagt ​​waar het project moet worden geïnstalleerd en de code al is gecompileerd. Het is niet mogelijk om dit te regelen met een #define .

Ik heb twee ideeën voor dit probleem:

  1. Gebruik een .bat-script dat het binaire bestand start en een schakelaar toevoegt aan de gegevensdirectory. De gebruiker start dan alleen dit .bat-bestand.

  2. Genereer een nieuw bestand door het installatieprogramma van de toepassing dat paden naar de gegevensdirectory bevat en installeer het ergens in de map Common App Data.

Wat adviseer je me om te doen?

3
Overweeg je om een ​​installateur te maken? door het installatieprogramma te gebruiken, kunt u de gebruiker het pad laten kiezen waar de bestanden van uw software naartoe worden gekopieerd. U kunt dit pad dat door de gebruiker is gekozen opslaan in Windows-registers voor toekomstig gebruik.
toegevoegd de auteur Jack, de bron
Gebruik het register, de meeste installatieprogramma's zouden u sleutels moeten laten maken.
toegevoegd de auteur Mat, de bron
toegevoegd de auteur Joe DF, de bron

1 antwoord

Als u exclusief win32 target, moet u de Broncompiler . Hiermee kunt u willekeurige bestanden opnemen in het uitvoerbare bestand en automatisch macro's genereren waarmee u ernaar kunt verwijzen en u kunt de win32 API gebruiken om ze te laden. De Door de gebruiker gedefinieerde resource kunt u willekeurige blobs opslaan in de build.

De nadelen zijn dat het helemaal niet draagbaar is en je moet een gematigde Microsoft fu hebben om het te laten werken.