首页 新闻 搜索 专区 学院

vs2008自带打包安装序列号验证

0
悬赏园豆:100 [已解决问题] 解决于 2012-09-17 10:09

我用vs2008自带的打包工具打包一个项目,想在安装时,做一个验证序列号的操作,我在自定义用户界面中添加了一个这样的界面,用来接收用户输入的序列号


  写了安装程序类,如下

 1 using System;
 2 using System.Collections;
 3 using System.Collections.Generic;
 4 using System.ComponentModel;
 5 using System.Configuration.Install;
 6 using System.Linq;
 7 using System.Windows.Forms;
 8 using BLL;
 9 namespace Install
10 {
11     [RunInstaller(true)]
12     public partial class MyInstaller : Installer
13     {
14         public MyInstaller()
15         {
16             InitializeComponent();
17            
18         }
19         
20         protected override void OnAfterInstall(IDictionary savedState)
21         {
22             base.OnAfterInstall(savedState);
23         }
24         public override void Install(IDictionary stateSaver)
25         {
26             base.Install(stateSaver);
27             BLL.SerialBLL bll = new SerialBLL();
28             string message = Context.Parameters["message"].ToString();
29             MessageBox.Show(message);
30             if (bll.CheckSerail(message) == true)
31             {
32                 MessageBox.Show("激活成功");
33 
34             }
35             else
36             {
37                 MessageBox.Show("激活失败");
38                 return;
39             }
40         }
41         protected override void OnBeforeInstall(IDictionary savedState)
42         {
43 
44             base.OnBeforeInstall(savedState);
45 
46         }
47         public override void Uninstall(IDictionary savedState)
48         {
49             base.Uninstall(savedState);
50 
51         }
52         public override void Rollback(IDictionary savedState)
53         {
54             base.Rollback(savedState);
55         }
56 
57 
58     }
59 }

通过CheckSerail()方法验证用户输入的序列号与我数据库里的用来保存序列号的表中是否匹配,但是在安装的过程中,报了一个 "1001 未将对象引用设置到对象的实例" 的错,可能和SerialBLL 有关,还请各位大神帮忙,在下新手,入行不深,或者有更好的建议可以做出这种效果的话,还请指教,感激不敬!!!!

Who Im I?的主页 Who Im I? | 初学一级 | 园豆:96
提问于:2012-09-14 15:38
< >
分享
最佳答案
1

你这个 BLL.SerialBLL 是在一个独立的程序集文件中吗?

收获园豆:100
Launcher | 高人七级 |园豆:45045 | 2012-09-14 15:47

是的,在BLL类库中

Who Im I? | 园豆:96 (初学一级) | 2012-09-14 15:53

@Who Im I?: 应该把验证的代码直接放在MyInstaller中。

Launcher | 园豆:45045 (高人七级) | 2012-09-14 15:56

@Launcher:那个方法只是一条查询语句

public bool CheckSerail(string SerailName)
{
string sql = string.Format("select 1 from Serial where Sid='{0}'",SerailName);
return dal.CheckSerail(sql);
}

这样

Who Im I? | 园豆:96 (初学一级) | 2012-09-14 16:00

@Launcher: 难道是把连接数据库的方法也写到MyInstaller中?然后这样

public bool CheckSerail(string SerailName)
{
this.SqlConnDb();
string sql = string.Format("select 1 from Serial where Sid='{0}'", SerailName);
SqlCommand cmd = new SqlCommand(sql, conn);
return Convert.ToInt32(cmd.ExecuteScalar()) == 1;
}去验证?

Who Im I? | 园豆:96 (初学一级) | 2012-09-14 16:16

@Who Im I?: 是的,直接写到这里面。

Launcher | 园豆:45045 (高人七级) | 2012-09-14 16:18

@Launcher: 不行,还是报这个错

Who Im I? | 园豆:96 (初学一级) | 2012-09-14 16:43

@Who Im I?: 你试着attach to process 看看能不能调试安装包程序,如果不能,我是爱莫能助了

空明流光 | 园豆:20 (初学一级) | 2012-09-14 16:57

@Who Im I?: 

http://msdn.microsoft.com/zh-cn/library/d9k65z2d(v=vs.100)

http://www.cnblogs.com/virusswb/archive/2008/07/09/1238819.html

参照这两篇文章,应该是你的自定义操作没有设置正确。

Launcher | 园豆:45045 (高人七级) | 2012-09-14 16:58

@Launcher: 第一个地址无效了。。。能再给个吗,谢谢

Who Im I? | 园豆:96 (初学一级) | 2012-09-14 17:18

@Who Im I?: http://msdn.microsoft.com/en-us/library/

然后: Development Tools and Languages

然后:Visual Studio 2010

然后:Visual Studio

然后:Application Development in Visual Studio

然后:Deploying Applications and Components

然后:Visual Studio Installer Deployment

然后你再把语言和地区选为中国。

Launcher | 园豆:45045 (高人七级) | 2012-09-14 17:32

@Launcher: 好吧,点到最后没看见Visual Studio Installer Deployment这个选项。。。

Who Im I? | 园豆:96 (初学一级) | 2012-09-14 17:41

@Who Im I?: 那你直接在bing里搜下 Visual Studio Installer Deployment 吧。

Launcher | 园豆:45045 (高人七级) | 2012-09-14 17:47
其他回答(1)
0

建议这个操作在安装后由软件自身来实现,而不要在安装包里面做。因为安装包一般都是可以被通过软件解压的,你的文件和打包的内容照样可以被拿到。

空明流光 | 园豆:20 (初学一级) | 2012-09-14 16:20

是吗,可这是BOSS说的,我累个去,快烦死了

支持(0) 反对(0) Who Im I? | 园豆:96 (初学一级) | 2012-09-14 16:45

@Who Im I?: Boss第一,你还是这样做吧?出了事你也不用负责嘛

支持(0) 反对(0) 空明流光 | 园豆:20 (初学一级) | 2012-09-14 16:55

@沧海一杰: 呵呵呵,亚历山大啊

支持(0) 反对(0) Who Im I? | 园豆:96 (初学一级) | 2012-09-14 16:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册