2013-02-05 61 views
1

我想在继续进行NSIS安装之前验证用户名和密码。从NSIS调用.net dll

当我点击下一个按钮时,我想检查用户是否有权安装该应用程序。对于这个检查,我想从我的.NET应用程序进行WCF调用。它会返回true或false。

基于此,我将继续或中止我的安装。我尝试使用CLR::Call /NOUNLOAD插件。由于我指的是一个服务引用,它抛出异常:

Error calling .net dll method

这里是NSIS脚本,我到目前为止有:

Name "Test CLRDLL MakeLogEntry" 
OutFile "TestCLRDLL.exe" 
Page instfiles 

Section 
    start InitPluginsDir 
    SetOutPath $PLUGINSDIR 
    File "MyDll.dll" 
    CLR::Call /NOUNLOAD "MyDll.dll" "namespace.classname" \ "ValidateLogin" 3 "Myserviceaddress/Servicename.svc"; "username" "password" 
    pop $0 
    MessageBox MB_OK $0 
sectionEnd 

Function .onGUIEnd 
    CLR::Destroy 
FunctionEnd 
+0

你可以发布你到目前为止的nsis脚本吗? –

+0

名称 “测试CLRDLL MakeLogEntry” OutFile将 “TestCLRDLL.exe” 页instfiles 节开始 InitPluginsDir SetOutPath $ PLUGINSDIR 文件 “MYDLL.DLL” CLR ::呼叫/ NOUNLOAD “MYDLL.DLL”“命名空间。类名” \ “ValidateLogin” 3 “HTTP://Myserviceaddress/Servicename.svc” “用户名”, “密码” 弹出$ 0 的MessageBox MB_OK $ 0 sectionEnd 功能.onGUIEnd CLR ::销毁 FunctionEnd – Karthik

+0

请始终在问题中添加说明以改善问题。 –

回答

3

你也应该知道,CLR: :调用插件仅适用于.Net 2.0程序集(不是更高版本)。 所以,也许你应该重新编译你的DLL。