1 votes

Installation sans surveillance de plusieurs programmes par le biais d'un fichier batch

Je peux installer le logiciel en réglant auto=1 en install.inf et ensuite utiliser le script suivant :

@echo off
for /F "tokens=2 delims=<>" %%i in ('type test.xml ^|find "<install>"') do (
set setup=%%i 
echo installing %installer% >>log.txt
%setup% 
)
@echo on 

Fichier de configuration XML ( test.xml ) :

<?xml version="1.0" encoding="UTF-16"?>

<install>C:\Users\UIDW6331\Desktop\tcm801x64\INSTALL.EXE</install>
<install>C:\Users\UIDW6331\Desktop\tcm801x64\INSTALL.EXE</install>

L'installation fonctionne, cependant, je veux l'installer dans un répertoire de destination spécifique. Comment puis-je le faire ?

Aussi, quand j'utilise des interrupteurs comme :

start /w %setup% /norestart /silent

oder

%setup% /passive /norestart 

Je reçois l'erreur suivante :

Le fichier d'informations d'installation n'a pas été trouvé. Vous devez décompresser toute l'archive avant d'exécuter le fichier install.exe. L'installation a échoué.

Comment peut-on y remédier ?

2voto

dbenham Points 10555

Je n'ai aucune idée de vos questions directes. Mais votre fichier batch ne peut pas fonctionner comme écrit.

Vous ne pouvez pas utiliser %setup% dans le même bloc de code (boucle for) qui définit la valeur parce que le bloc entier est analysé en une seule passe, et la valeur est développée avant que l'analyse syntaxique ait lieu. La valeur est correctement définie, mais la valeur développée sera la valeur qui existait avant que vous n'entriez dans votre boucle.

La première fois que vous exécutez votre script de traitement par lots, l'option setup n'est pas encore définie, ce qui entraîne un échec complet. La valeur est définie, mais votre boucle ne peut pas la voir. Votre script ne dispose pas de setlocal , de sorte que la dernière valeur qui a été définie est préservée lorsque le script se termine. La prochaine fois que vous exécuterez votre script, il utilisera la valeur préservée lors de la dernière exécution sur chaque ligne de votre fichier XML.

Je pense que vous pouvez résoudre ce problème particulier en remplaçant call %%setup%% para %setup% .

EDIT

Ou mieux encore, éliminez simplement le setup entièrement et utiliser %%i directement :

for /F "tokens=2 delims=<>" %%i in ('type test.xml ^|find "<install>"') do (
  echo installing %installer% >>log.txt
  %%i
)

Note - Je ne comprends pas où le installer la valeur vient de. Je suppose que vous savez ce que vous faites, mais ça me semble bizarre.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X