2013-01-24 3 views
0

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?

Répondre

0

Où dans votre disque dur est osql.exe? Essayez de modifier votre cmd pour utiliser des chemins absolus.

Vous pouvez vérifier le chemin de votre installateur voit avec:

ReadEnvStr $0 PATH 
MessageBox MB_OK "PATH: $0" 

Je ne suis pas sûr, mais peut-être si votre installateur fonctionne comme un autre utilisateur (administrateur), il pourrait alors avoir un autre chemin ..

+0

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

+0

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

+0

J'ai mis à jour la réponse –

Questions connexes