2008-11-17 30 views
0

Je voudrais appeler caspol à partir d'un script dans une action personnalisée dans un msi (projet d'installation). Je préférerais un msi standard à ClickOnce, car avec un standard msi je peux installer les pilotes & associer les types de fichiers avec notre application alors qu'avec ClickOnce je ne peux pas.exécuter caspol à partir de vbscript

Lorsque j'exécute la commande caspol de la ligne de commande, il réussit, mais de l'intérieur vbscript il échoue toujours avec l'erreur « Fehler: Unbekannte Mitgliedschaftsbedingung - -url .. » - qui se traduit par « Erreur: adhésion inconnue condition: -url ". Pour clarifier davantage: A copier & pâte de la commande générée fonctionne correctement sur la ligne de commande directement sur le lecteur local d'une machine virtuelle vierge, en tant qu'administrateur local , dans le cadre d'un groupe de travail.

Je ai deux idées: 1. Je ne suis pas roi vbscript, alors peut-être que j'ai manqué des citations ou fait un certain type d'erreur de syntaxe . 2. Caspol reconnaît que je l'exécute depuis un script et s'arrête avec une erreur intentionnellement absurde.

Personnellement, je crois que c'est juste une erreur de syntaxe stupide.

Voici mon script:

set sh = CreateObject("Wscript.Shell") 
Set fso = CreateObject("Scripting.FileSystemObject") 

dim command 
dim location 
dim retVal 

location = fso.GetFile(Wscript.ScriptFullName).ParentFolder 

'%windir%\microsoft.net\framework\v2.0.50727\caspol.exe -pp off -m -addgroup 1 –url file://COMPUTER/SHARE/* FullTrust -name sbw2 
command = fso.GetSpecialFolder(0) & "\microsoft.net\framework\v2.0.50727\caspol.exe -pp off -m -ag 1 –url file://" 
for each s in Split(location, "\") 
     if Len(s) > 0 then 
       command = command & s & "/" 
     end if 
next 
command = command & "* FullTrust -name sbw2" 

'DEBUG 
'command = fso.GetSpecialFolder(0) & "\microsoft.net\framework\v2.0.50727\caspol.exe -m -ag 1 –url file://mjlaptop/sbw2/* FullTrust" 
Wscript.StdOut.WriteLine VbClrf 
Wscript.StdOut.WriteLine command 
Wscript.StdOut.WriteLine VbClrf 

Set output = sh.Exec(command) 

dim text 
while Not output.StdOut.AtEndOfStream 
     text = text & output.StdOut.Read(1) 
Wend 
Wscript.StdOut.WriteLine text 

Merci à l'avance,

Matt

Répondre

0

Modifier la mise en forme de l'url de commande dans \\ mjlaptop \ sbw2 * pour une raison quelconque, formaté comme "fichier: // ..." ne fonctionnera pas. Avec ou sans devis.

Cet uid (yossarian) m'appartient aussi (Matt Jacobsen). J'avais dû utiliser le dessus comme réclamant était pour la maintenance.

+0

J'accepte ma propre réponse ici. Pour clarifier, je suis à la fois Cpt. Yossarian et Matt Jacobsen. N'hésitez pas à vous plaindre si vous pensez que c'est nécessaire. –

+0

Pratique. Peut-être méritez-vous aussi un vote pour le savoir? – Tomalak

0

Non, c'est pas. Même avec command = commande & "" "" à la fin de toute cette concaténation de chaîne.

+0

La réponse au code fournie ci-dessus ne sera même pas compilée. Bonne idée de prendre ma suggestion simple que j'ai manqué une citation et, heh, me le citez, mais si vous allez faire cela, vous devez être sûr qu'il va fonctionner sans lancer une simple erreur de syntaxe. –

0

Copier & collé de votre réponse dans mon code:

"C:\WINDOWS\microsoft.net\framework\v2.0.50727\caspol.exe -pp off -m -ag 1 -url "file://mjlaptop/sbw2/*" FullTrust -name sbw2 

\\mjlaptop\sbw2\setpolicy.vbs(32, 1) WshShell.Exec: Das System kann die angegebene Datei nicht finden. 

Il manque un devis. Et maintenant, en ajoutant un guillemet fermant, comme je suppose que vous aviez l'intention:

"C:\WINDOWS\microsoft.net\framework\v2.0.50727\caspol.exe" -pp off -m -ag 1 -url "file://mjlaptop/sbw2/*" FullTrust -name sbw2 

Microsoft (R) .NET Framework CasPol 2.0.50727.42 
Copyright (c) Microsoft Corporation. Alle Rechte vorbehalten. 

Fehler: Unbekannte Mitgliedschaftsbedingung - -url.. 

C'est l'erreur comme indiqué dans mon message d'origine. Tu as raison: la commande est valide. Que la commande est valide n'est pas le problème. Je peux copier et coller l'écho sanglant dans une fenêtre de commande et il va s'exécuter avec succès. Je peux coller autant de citations que vous le souhaitez, et je pense que ça va encore se plaindre de la "condition d'appartenance inconnue".

Je vais essayer de faire mes réponses dans les commentaires.

+0

Tomalak, vous étiez sur la bonne voie. Je n'ai pas essayé votre syntaxe depuis que j'ai trouvé la solution moi-même. –

+0

... ouais! caspol doit accepter les deux formats de "l'URL", mais pour une raison quelconque, le seul à travailler via vbs est le formulaire "partage réseau". J'ai eu quelques problèmes avec cette forme d'URL en conjonction avec caspol auparavant sur un site client. –

0

"C: \ WINDOWS \ microsoft.net \ Framework \ v \ caspol" -pp off -m 1 -url -AG "file: // mjlaptop/sbw2/*" FullTrust -name sbw2

Microsoft (R) .NET Framework CasPol 2.0.50727.42 Droit d'auteur (c) Microsoft Corporation.Alle Rechte vorbehalten.

Fehler: Unbekannte Mitgliedschaftsbedingung - -url ..

à l'aide du v au lieu de l'ensemble nom de fichier permet le code de recherche caspol dans chaque dossier de version.

Questions connexes