在InstallShield中写SuperDog加密狗程序

因为公司有个需求,需要一个安装包,只允许在一台电脑上安装,安装了之后,就无法在其他电脑安装了,我就想到了加密狗,于是就淘宝了一个safenet的超级狗superdog。

通过c#编写一个dll

先将目标框架改为 .net framework3.5,再将Assembly.cs中的comVisible的false改为true。

namespace XXXXXXX
{
    public class XXXXXXX
    {
        public bool GetSuperDog()
        {
            bool flag = false;
            string text = null;
            MyClass myclass = new MyClass();
            using (Dog dog = new Dog(new DogFeature(DogNumber)))
            {
                SuperDog.DogStatus status = dog.Login(VendorCode.Code);
                if (status == SuperDog.DogStatus.StatusOk)
                {
                    //弄个数据文件
                    DogFile file = dog.GetFile(FileNumber);
                    status = file.Read(ref text);
                    if (status == SuperDog.DogStatus.StatusOk)
                    {
                        if (//自己判断)
                        {
                            status = file.Write(myclass.getPassWord());
                            if (status == SuperDog.DogStatus.StatusOk)
                            {
                                flag = true;
                            }
                        }
                        else
                        {
                            if (myclass.getPassWord() == text)
                            {
                                flag = true;
                            }
                        }
                    }
                }
                dog.Logout();
            }
            return flag;
        }
    }
    public class MyClass
    {
        public string getPassWord()
        {
            //具体实现就不写了
            return null;
        }
    }
}

在InstallShield中使用

首先添加下列这些文件
在InstallShield中写SuperDog加密狗程序_第1张图片

在installScript中调用dll

在installScript中开始的地方,我放在了Dlg_Start下。注意:打包的安装程序有依赖的,就是上图的这些dll,需要安装下windir下,因此,调用c#的dll之前需要将dll拷贝到%systemroot%下。

	XCopyFile(SUPPORTDIR^"*.dll",WINDIR ,COMP_NORMAL);  
	havedog = CheckSuperDog();
	if(havedog = FALSE) then
		MessageBox( "XXXXX", SEVERE );
		abort;
	endif;
prototype  GetSuperDog(); 	
	
	
 function GetSuperDog() 
  string szDllPath; 
  object oMyTest;   
 begin     
  szDllPath= SUPPORTDIR^"XXXXXXX.dll"; //dll文件路径
 set oMyTest=CoCreateObjectDotNet(szDllPath,"XXXXXXX.XXXXXXX") ;//后面的字符串为命名空间
       if(oMyTest.GetSuperDog()) then       
       return TRUE;  
       else         
       return FALSE; 
       endif;        
 end;

你可能感兴趣的:(InstallShield,C#,InstallShield,加密狗)