2008-11-17 62 views
0

我想在一个msi(安装项目)的 自定义操作中的脚本内调用caspol。我更喜欢标准msi ClickOnce, ,因为使用标准msi我可以安装驱动程序&关联 filetypes与我们的应用程序,而使用ClickOnce我不能。从vbscript中执行caspol

当我在命令行成功, 但是从VBScript中它总是失败,错误执行命令caspol“Fehler: Unbekannte Mitgliedschaftsbedingung - -url ..” - 意为 “错误:未知会员条件:-url“。要进一步说明:A 副本&生成的命令的粘贴可以在命令行 上直接在虚拟机的本地驱动器上正常工作,如本地 管理员作为工作组的一部分。

我有两个想法: 1.我不是VBScript国王,所以也许我错过了引号或者做了一些其他类型的语法错误。 2.卡斯波认识到我正在从一个脚本中运行它,并且因故意无意义的错误而暂停。

个人而言,我相信这只是一个愚蠢的语法错误。

这里是我的脚本:

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 

由于提前,

马特

回答

0

由于某种原因,将命令中url的url格式更改为\\ mjlaptop \ sbw2 * ,格式为“file:// ...”将不起作用。带或不带引号。

这个uid(yossarian)也属于我(Matt Jacobsen)。我不得不使用上面的说法,因为维护人员已经关闭了。

0

没有这不是它。即使与 命令=命令&“”“” 在所有字符串连接的末尾。

+0

上面提供的代码答案甚至不会编译。不错的主意,我想我的简单建议,我错过了一个报价,嘿,引用它给我,但如果你要这样做,你必须确定它会运行,而不会抛出一个简单的语法错误。 – 2008-11-17 15:09:39

0

复制&从你的答案粘贴到我的代码:

"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. 

它缺少一个报价。现在,添加一个收尾引号,因为我猜你的意图是:

"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.. 

这就是我在原始文章中给出的错误。你是对的:该命令是有效的。命令是有效的不是问题。我可以将血腥的回声复制并粘贴到命令窗口中,并且它会成功执行。我可以随心所欲地在其中插入尽可能多的引号,但我认为它仍然会抱怨“未知的成员条件”。

我会尝试在评论中提出我的回复。

+0

Tomalak,你是在正确的轨道上。自从我自己找到解决方案后,我还没有尝试过您的语法。 – 2008-11-17 15:43:10

+0

...是的! caspol必须接受这两种格式的“网址”,但由于某种原因,唯一通过vbs工作的是“网络共享”格式。尽管在客户网站之前,我曾经与caspol联合使用过这种形式的url。 – 2008-11-17 15:51:33

0

“C:\ WINDOWS \ microsoft.net \框架符\ v \ caspol” -PP关闭-m -ag 1 -url “文件:// mjlaptop/sbw2/*” FullTrust -name sbw2

微软(R).NET Framework CasPol 2.0.50727.42 版权所有(c)Microsoft Corporation。所有Rechte vorbehalten。

Fehler:Unbekannte Mitgliedschaftsbedingung - -url ..

使用V而不是整个文件名允许代码搜索caspol在每一个版本的文件夹中。