J'écris un programme d'installation qui devrait effectuer certaines opérations de base de données MSSQL. Ces opérations sont dans un fichier .cmd et sont effectuées via OSQL.exe dans MSSQL Server 2000.NSIS ExecWait et l'application OSQL
Maintenant vient mon problème. Lorsque je double-clique sur le fichier batch, il s'exécute OK. Toutefois, si je l'exécute via ExecWait dans mon installateur (ou Exec, ou ExecShell, tout essayé, cela ne fait aucune différence), Windows dit que la commande osql est introuvable ... Le répertoire de travail actuel défini via SetOutPath est le même répertoire fichier .cmd est situé dans
J'ai aussi essayé de simplifier le cas autant que ceci:.
sql.cmd:
osql
pause
Alors que dans ma source NSIS je:
Section "Perform DB operations" SEC03
ReadEnvStr $0 SYSTEMDRIVE
SetOutPath "$0\DBUtils"
SetOverwrite try
File /r "..\source_files\DBUtils\*"
ExecWait '"$0\DBUtils\sql.cmd"'
SectionEnd
mon problème se passe ici aussi . En double-cliquant ou en appelant le .cmd depuis la ligne de commande, il s'exécute bien, mais l'Exec de NSIS, pour une raison mystérieuse, ne semble pas trouver osql. Quelqu'un a-t-il une idée de ce qui pourrait arriver?
Salut! Il est sous C: \ Program Files \ Microsoft SQL Server \ 80 \ Outils \ Binn \ OSQL.exe, C: \ Program Files \ Microsoft SQL Server \ 80 \ Tools \ Binn \ est inclus dans la variable d'environnement PATH. Je vais certainement essayer de tout changer pour des chemins absolus. Cependant, le problème est que le .cmd exécute les opérations de la base de données pas directement pour mon programme mais il appartient à un composant tiers. Par conséquent, je préfère laisser inchangé le fichier .cmd fourni par un tiers. – Peter
Cela fonctionne avec un chemin absolu. Cependant, il serait bon de découvrir pourquoi cela ne fonctionne pas avec un chemin relatif. En passant, j'ai essayé de changer osql pour certains exécutables Windows qui devraient être dans le PATH, comme calc ou wordpad, et ils fonctionnent. – Peter
J'ai mis à jour la réponse –