Documentation Steamworks
Créer et utiliser des scripts d'installation

Présentation

Si Steam peut installer automatiquement plusieurs redistribuables courants, votre application peut avoir d'autres exigences de première exécution.
REMARQUE : la fonctionnalité de script d'installation décrite ci-dessous concerne principalement les systèmes exploitation Windows. La prise en charge de MacOS se limite aux permissions de fichiers et aux liens symboliques. Il n'existe aucune fonctionnalité de script d'installation pour Linux/SteamOS à l'heure actuelle.

Un script d'installation est un fichier de configuration vous permettant d'exécuter certaines actions avant l'installation.

Les applications/jeux complets et les packages de DLC peuvent tous deux disposer de scripts d'installation. Si vous intégrez vos scripts d'installation à votre version, vous pouvez disposer d'un nombre indéfini de scripts. Pour une application SteamPlay, nous vous recommandons de toujours utiliser les dépôts spécifiques à votre système d'exploitation pour contenir vos scripts d'installation.

Exemple

Un script de base ressemblera à ceci :
"InstallScript" { "Registry" { "HKEY_LOCAL_MACHINE\\SOFTWARE\\Foo\\Bar" { "string" { "Install_Path" "%INSTALLDIR%" "Exe_Path" "%INSTALLDIR%\\foobar.exe" } "dword" { "PatchVersion" "12" } } } "Run Process" { "DirectX" { "HasRunKey" "HKEY_LOCAL_MACHINE\\Software\\Valve\\Steam\\Apps\\480" "Process 1" "%INSTALLDIR%\\DirectX\\DXSETUP.exe" "Command 1" "/silent" "NoCleanUp" "1" } } }

Le deuxième nom de clé après la racine décrit le genre d'action qui va s'opérer.

Remarque : tous les noms de clé et leurs valeurs peuvent utiliser des séquences d'échappement, donc si vous utilisez \, convertissez-le en \\.

Intégrer des scripts d'installation à votre version

En premier lieu, le fichier du script d'installation doit faire partie d'un dépôt installé avec la version. Assurez-vous que le fichier réside au sein de la ContentRoot définie de l'application ou du dépôt.

Deuxièmement, marquez un script d'installation utilisant la directive InstallScript dans un script de création de dépôt. Vous en trouverez un exemple sur la page Télécharger du contenu sur Steam - Scripts de builds avancés.

Deux actions se déroulent pendant le processus de compilation.
  • Le script d'installation est téléchargé vers Steam et reçoit une signature cryptographique. Cette signature est validée par Steam avant l'exécution de tout script d'installation et est nécessaire pour accomplir certaines opérations, comme l'écriture dans la ruche HKLM sur Windows. Ceci peut entrainer une modification de votre copie locale du script d'installation.
  • Le script d'installation est marqué dans le manifeste du dépôt. Vous pouvez en voir un exemple dans le fichier manifest.txt généré sous forme d'un 100 dans le champ Flags.
Lorsqu'une personne lance un jeu sur Steam, Steam recherche dans l'ensemble des dépôts montés pour ce jeu tout fichier portant le marqueur de script d'installation et l'exécute.

Registry

La commande Registry vous permet de créer ou de modifier les valeurs de registre de chaine et DWORD. Toute clé située sous le nom de clé « Registry » sera traitée comme le chemin complet vers la clé de registre que vous désirez créer ou ouvrir. Sous cette clé, spécifiez soit une clé de « chaine » soit une clé « DWORD ». Tous les noms de clé et leurs valeurs stockés dans les clés de « chaine » ou « DWORD » seront les noms et valeurs de registre à définir.
Pour définir la valeur par défaut d'une clé de registre, vous devez saisir le nom de la clé sous la forme (Default) (lien en anglais).

Run Process

La commande Run Process permet à votre application d'exécuter des programmes avant le premier lancement de votre jeu sur un compte.
Pour déterminer si un programme a besoin d'être exécuté, le script d'installation examine le nom de clé (sous forme de valeur de registre DWORD) figurant dans la valeur HasRunKey. Si la valeur n'est pas présente ou égale à 0, la commande effectuera un appel à CreateProcess sur les valeurs processXX/commandXX. Si CreateProcess échoue, un appel à ShellExecuteEx est alors effectué. Si l'ExitCode du programme est de 0, le script d'installation supposera qu'il a réussi et écrira votre nom de clé comme 1 dans le registre.

La clientèle de Steam est friande d'installations rapides et silencieuses. Ajoutez les paramètres Silence ou Sourdine à toutes les commandes de Run Process et n'ajoutez que ce dont vous avez absolument besoin pour le jeu.
Les clés/valeurs pour Run Process sont les suivantes.
  • Processus 1 : chemin vers le programme que vous désirez lancer.
Les clés/valeurs optionnelles pour Run Process sont les suivantes.
  • Commande 1 : commande optionnelle que vous désirez transmettre au programme.
  • HasRunKey : clé de registre optionnelle dont l'objectif est de vérifier si le programme prérequis est déjà installé.
  • NoCleanUp : marqueur optionnel. Lorsqu'il est défini, le script d'installation ne supprimera pas le nom de clé lorsque votre application sera effacée de Steam.
  • MinimumHasRunValue : optionnel, définit la valeur minimum à partir de laquelle le script d'installation lancera le programme.
  • Requirement_OS : clé optionnelle à appliquer aux exigences du système d'exploitation. Consultez la section Exigences spécifiques au système d'exploitation pour en savoir plus.
  • AsCurrentUser : marqueur optionnel. Le définir sur 1 s'il est important que ce programme soit lancé par l'utilisatrice ou utilisateur actuel. Sinon, le client Steam pourrait l'exécuter en tant qu'admin pour éviter de demander une élévation de privilèges lors de l'utilisation de Big Picture ou de SteamVR.

Exceptions du pare-feu

Si votre jeu utilise une forme quelconque de mise en réseau, utilisez les exceptions du pare-feu pour conférer automatiquement une exception au pare-feu dans Windows sans contraindre l'utilisateur ou l'utilisatrice à accepter l'exception.
"Firewall" { "Space War Game" "%INSTALLDIR%\\SpaceWar.exe" }

Exigences spécifiques au système d'exploitation

La valeur Requirement_OS est disponible pour exécuter différentes installations sur différentes versions/SKU de systèmes d'exploitation. Elle nécessite un nouveau groupe de clés nommé Requirement_OS, puis des paires clés/valeurs supplémentaires à l'intérieur. Les options de système d'exploitation disponibles sont énumérées ci-dessous.
  • Is64BitWindows : spécifie que le processus ne s'exécutera que sur une version 64 bits du système d'exploitation. Les valeurs acceptables sont 1 ou 0.
  • OSType : spécifie que le processus ne s'exécutera que sur une version spécifique du système d'exploitation. Les valeurs acceptables sont :
    • Windows 3.11
    • Windows 95
    • Windows 98
    • Windows ME
    • Windows NT
    • Windows 2000
    • Windows XP
    • Windows 2003
    • Windows Vista
    • Windows 7
    • Windows 2008
    • Windows 2012
    • Windows 2012 R2
    • Windows 8
    • Windows 8.1
    • Windows 10

Exemple 64 bits
Cet exemple exécutera le programme approprié pour l'installation en 32 ou 64 bits.
"Net32" { "Process 1" "%INSTALLDIR%\\redist\\Controller\\32bitInstaller.exe" "NoCleanUp" "1" "Requirement_OS" { "Is64BitWindows" "0" } } "Net64" { "Process 1" "%INSTALLDIR%\\redist\\Controller\\64bitInstaller.exe" "NoCleanUp" "1" "Requirement_OS" { "Is64BitWindows" "1" } }

Exemple de type de système d'exploitation
Cet exemple ne s'exécutera que sur Windows XP.

"Controller" { "Process 1" "%INSTALLDIR%\\redist\\WinXPInstaller.exe" "NoCleanUp" "1" "Requirement_OS" { "OSType" "Windows XP" } }

Variables d'environnement

Les variables d'environnement sont prises en charge dans un script d'installation. Toutes les variables d'environnement standard disponibles sur Windows peuvent être utilisées, ainsi que quelques autres spécifiques à un script d'installation. Il s'agit des variables suivantes.
  • %INSTALLDIR% : le chemin complet vers le lieu d'installation de l'application, sans barre oblique inverse.
  • %ROOTDRIVE% : la lettre de lecteur où s'effectue l'installation de l'application, comme C.
  • %APPDATA% : dossier \Users\username\AppData\.
  • %USER_MYDOCS% : obtient le dossier user\My Documents.
  • %COMMON_MYDOCS% : obtient le dossier All Users\Documents.
  • %LOCALAPPDATA% : obtient les dossiers \Documents et Settings\username\Local Settings\Application Data (uniquement sur Vista et versions ultérieures).
  • %WinDir% : obtient le répertoire d'installation Windows.
  • %STEAMPATH% : obtient le chemin d'accès complet au répertoire d'installation du client Steam.

Remarque : ces chemins sont courants, mais peuvent être différents selon la version de Windows utilisée.

Valeurs spécifiques à une langue

Les valeurs de chaine de caractères et DWORD peuvent se voir assigner différentes données, en fonction de la langue dans laquelle l'utilisateur ou l'utilisatrice exécute Steam. Pour utiliser ce paramètre, créez une sous-clé au sein de la clé de chaine ou DWORD avec le nom de la langue, puis assignez-lui les noms et les valeurs. Exemple :
"InstallScript" { "Registry" { "HKEY_LOCAL_MACHINE\\SOFTWARE\\MonkeyDime Studios\\Killer Banana Peel" { "dword" { "english" { "Language" "1" } "french" { "Language" "2" } "german" { "Language" "3" } "italian" { "Language" "4" } "spanish" { "Language" "5" } } } } }

Le script d'installation obtient la langue depuis la clé de registre de Steam, en émettant une requête portant sur la valeur « Language ». Si cette valeur n'est pas trouvée, alors l'anglais sera la langue par défaut.

Désinstallation d'une application

Lorsqu'une personne supprime ou vérifie votre application dans Steam, les scripts d'installation seront appelés afin de supprimer toutes les valeurs de registre qu'il a créées. Le script d'installation supprimera également la valeur utilisée pour déterminer si un programme doit être exécuté à partir de Run Process, afin qu'il puisse être exécuté au prochain lancement de votre application (sauf si le marqueur NoCleanUp a été activé).

Run Process on Uninstall

Si vous devez exécuter un processus au moment de la désinstallation de votre application, ajoutez ceci au script d'installation. Veuillez ne pas désinstaller de redistribuables courants, tels que DirectX, msvc run time, etc., car ils seront probablement utilisés par d'autres jeux. Cette opération n'est destinée qu'aux processus de désinstallation spécifiques à des jeux.
REMARQUE : Run Process On Uninstall sera également appelé lorsque quelqu'un vérifiera l'application dans Steam. N'exécutez pas de processus qui supprimera l'ensemble des fichiers, car Steam téléchargerait alors à nouveau l'ensemble des fichiers pendant une vérification.
"InstallScript" { "Run Process On Uninstall" { "Process_name" { "Process 1" "process.exe" "Command 1" "/command" } } }

Foire aux questions

Q. Pourquoi mon script d'installation continue-t-il à exécuter mon redistribuable à chaque fois que je lance le jeu ?
R. Cette situation signifie généralement que le redistribuable renvoie un code de retour n'étant pas égal à zéro. Steam vérifie que le code de retour est bien de zéro. Si le programme constate que le code de retour est de zéro, il marque le redistribuable comme installé et ne l'exécute plus à nouveau. Si le redistribuable renvoie toute autre valeur, Steam essaiera de l'exécuter à nouveau lors du prochain lancement.

Pour corriger cela, examinez les chemins et les paramètres de votre redistribuable. Certains redistribuables renverront des valeurs non égales à zéro s'ils existent déjà sur la machine. Cette situation peut bien souvent se corriger en utilisant le mode « silent » ou « quiet » du redistribuable.

Q. Pourquoi ma clé de registre n'est-elle pas écrite ?
R. Cette situation survient généralement parce que le script d'installation n'est pas signé et que vous écrivez dans HKLM.
Consultez la section sur l'intégration à la version, et assurez-vous qu'une clé "kvsignatures" a été ajoutée à votre script pendant la compilation, car Steam exige que le processus de signature soit achevé avant d'écrire dans HKLM.

Cette situation peut également provenir de la virtualisation de Windows 64 bits. Sur Windows 64 bits, Steam inscrit le chemin Wow6432Node dans le registre.

Q. Pourquoi mon script d'installation semble-t-il ne pas s'exécuter du tout ?
R. Veuillez vérifier à nouveau que votre configuration est correctement préparée.

Q. Comment ajouter des redistribuables macOS ? Pourquoi Run Process ne fonctionne-t-il pas avec mon script d'installation macOS ?
R. Nous ne prenons pas en charge l'installation des redistribuables Mac à l'heure actuelle. Vous devrez placer le programme d'installation dans votre exécutable principal.