2017-09-15 7 views
1

J'ai créé un appel de commande DOS dans mon script Install Shield C: \ Windows \ System32 \ PnPutil.exe -a "C: \ Program Files (x86) \ Anite \ Drivers \ SPS \ ftdiport.inf "L'exécution d'une commande DOS à partir de InstallShield échoue

Lors de l'exécution de mon programme InstallShield sur un ordinateur Windows 64 bits (double-cliquez sur le fichier Setup.exe), cette commande donne toujours un code de retour 2 (Le système ne trouve pas le fichier spécifié. le fichier ne peut pas être trouvé à l'emplacement spécifié). Cependant, lorsque j'ouvre une fenêtre CMD (en tant qu'administrateur) sur le même PC et exécute exactement la même commande DOS à partir du même emplacement que le fichier setup.exe, cela fonctionne toujours. Je sais que lorsque notre script InstallShield s'exécute, il le fait en mode Elevé. L'émission de cette commande depuis InstallShiled doit donc être identique à celle exécutée depuis CMD en mode Administrateur. Cependant, il échoue dans le premier cas mais réussit dans le second.

Notez également que lorsque j'exécute le même programme InstallShield sur un ordinateur Windows 32 bits, la commande fonctionne toujours C: \ Windows \ System32 \ PnPutil.exe -a "C: \ Program Files \ Anite \ Drivers \ SPS \ ftdiport.inf "

Il semble y avoir un problème sur le système d'exploitation Win 64 bits avec l'exécution de cette commande DOS à partir du script InstallShield, en ce sens qu'il ne trouve pas le fichier dans la zone Program Files (x86). Aussi ce problème semble seulement se produire lors de l'invocation de l'utilitaire pnputil - tous les autres utilitaires (par exemple, regsvr32.exe) sont invoqués sans aucun problème.

Tout conseil ou toute aide apportés seraient grandement appréciés. Merci d'avance.

+0

Ouvrez-vous une invite de commande 32 bits ou 64 bits et quel est votre code? InstallScript s'exécute toujours en tant que code 32 bits, donc une invite de commande 32 bits serait son meilleur parallèle. –

Répondre

1

j'ai découvert comment résoudre ce problème issue.What J'ai trouvé que lorsque vous construisez une image avec le programme Install Shield 32 bits, il a un paramètre (WOW64FSREDIRECTION) qui redirige automatiquement toutes les applications 64 bits et les appels système vers le répertoire C: \ Windows \ SysWOW64, donc dans ce cas cette provoquait l'échec de l'appel de commande pnputil car il ne se trouvait pas dans ce répertoire (d'où le code d'erreur Le système ne peut pas trouver le fichier spécifié ") mais dans le répertoire system32. J'ai utilisé la routine installshield "Disable (WOW64FSREDIRECTION)", qui écrase cette propriété, et cela a corrigé le problème - les commandes ont été exécutées avec succès à partir du répertoire system32.