随笔-9  评论-0  文章-6  trackbacks-0
  2012年3月6日

1:新建安装部署项目
打开VS,点击新建项目,选择:其他项目类型->安装与部署->安装向导(安装项目也一样),然后点击确定.(详细见下图)
此主题相关图片如下: 2:安装向导
关闭后打开安装向导,点击下一步,或者直接点击完成.
3:开始制作
安装向导完成后即可进入项目文件夹: 双击"应用程序文件夹"在右边的空白处右击,选择添加->文件,将你的做的应用程序的可执行文件和相应的类库和组件添加进来.

然后右击你的可执行文件,创建快捷方式,然后把快捷方式分别剪切或复制到左边的"用户的´程序´菜单"和"用户桌面"中.
这样安装程序安装安装完成后会在 "开始->所有程序"和"桌面"上生成程序的快捷方式.
然后右击左边的"应用程序文件夹"打开属性对话框:
将属性中的"defaultlocation"的路径中的"[manufacturer]"去掉,
不然的话做好的安装程序默认安装目录会是"c:\programm file\你的用户名\安装解决方案名称";
然后打开解决方案管理器,右击你的解决方案名称,选择属性:

在打开的属性页中,选择"系统必备",

在打开的系统必备页中,选中如下中的选择项,这个很重要!!!!!1!!!!!
选上以后,在生成的安装文件包中包含.netframework组件.(这个选项默认是没有选中的)


好了,这样就完成99%了,然后点击"生成->生成解决方案",哈,生成成功!
4:制作完成
现在打开解决方案文件夹下的debug文件夹,就可以看到生成的安装文件了.

】关于"卸载"功能的添加 上面的文章只介绍了简单的生成安装的方法,
但是在vs.net2005下并没有直接生成卸载程序的功能, 所以我们只好用msi来实现了, 原理我就不讲了,网上一搜一堆,我只讲操作,
1】:在添加你的应用程序项目的时候,多添加一个msiexec.exe进去,
这个文件在c:\windows\system32文件夹下,
添加进去以后,为了让他更像个卸载程序,把他的名字改成"Uninstall.exe",

当然这个关系不大,改不改都行的. 然后给他创建一个快捷方式,放到桌面或者"开始-程序"中,
我选择放在了开始菜单中,然后下面我们要的做的就是查找这个部署项目的ProductCode了,
鼠标左键单击项目名称,记住是左键单击,然后点击属性标签,注意:不是右击的属性, 这个区别很大,这时你就可以看到ProductCode了,

然后打开你创建的那个快捷方式的属性对话框, 在Aguements属性中输入"/x {ProductCode}",


好了,然后点击"生成解决方案"即可生成带有卸载功能的安装程序了.

posted @ 2012-03-06 23:03 NLazyo 阅读(50) 评论(0) 编辑
  2012年3月5日

最近在做一个cs的项目,项目已经完成,后来发现不兼容windows7,经过一番整改,终于大功落成。现将心得体会写在这里。
首先读取注册表要给用户管理员得权限。exe在Vista或Win7下不以管理员权限运行,会被UAC(用户帐户控制)阻止访问系统某些功能,如修改注册表操作等;如何让exe以管理员权限运行呢,方法有两种,一个是直接修改exe属性;另一个是在程序中加入MANIFEST资源,下面分别介绍。
1. 直接修改exe属性:
1) 右击“exe”,在弹出的菜单中选择“属性”,出现的界面如下图:
 
 

 
2) 选择“兼容性”项,并勾选“以管理员身份运行此程序”项即可。
2. 在程序中加入MANIFEST资源 C#:
?         打开Vs2008或vs2010工程,看在Properties下是否有app.manifest这个文件;如没有,右击工程在菜单中选择“属性”,出现界面如下:

 
 
?         选中“安全性”,在界面中勾选“启用ClickOnce安全设置”后,在Properties下就有自动生成app.manifest文件。
打开app.manifest文件,在<security>下加入
<requestedPrivileges>//删掉xmlns="urn:schemas-microsoft-com:asm.v3"
         <requestedExecutionLevel level="requireAdministrator" cess="false"/>
       </requestedPrivileges>,重新编译即可,

posted @ 2012-03-05 22:28 NLazyo 阅读(254) 评论(0) 编辑
  2011年12月3日
 
作者:www.zune123.com 发布时间:2011-10-23
posted @ 2011-12-03 23:17 NLazyo 阅读(66) 评论(0) 编辑
 
作者:www.zune123.com 发布时间:2011-10-05
posted @ 2011-12-03 23:14 NLazyo 阅读(43) 评论(0) 编辑
 
作者:www.zune123.com 发布时间:2011-11-02
posted @ 2011-12-03 23:07 NLazyo 阅读(151) 评论(0) 编辑
 
作者:www.zune123.com 发布时间:2011-09-22
posted @ 2011-12-03 23:05 NLazyo 阅读(220) 评论(0) 编辑
  2011年9月2日

   

//键盘键值
                      private void ChangeKey(TextBox textBox,System.Windows.Forms.KeyEventArgs e,int i)
		{
			if((e.KeyValue>=32 && e.KeyValue<=40) || (e.KeyValue>=45 && e.KeyValue<=46) || (e.KeyValue>=48 && e.KeyValue<=57) || (e.KeyValue>=65 && e.KeyValue<=90) ||
				(e.KeyValue>=96 && e.KeyValue<=107) || (e.KeyValue>=109 && e.KeyValue<=111) || (e.KeyValue>=186 && e.KeyValue<=192) ||
				(e.KeyValue>=219 && e.KeyValue<=222))//键盘键值
			{
				textBox.Text=e.KeyCode.ToString();
				this.keys[i]=e.KeyCode;
			}
		}
 
//将字符串转换为相对应的键  		
                Keys    keys=new Keys[5];
                for(int i=0;i<nodes[2].ChildNodes.Count;i++)
                {
                    KeysConverter kc=new KeysConverter();     
                   this.keys[i]=(Keys)(kc.ConvertFromString(nodes[2].ChildNodes[i].InnerText));
                }
posted @ 2011-09-02 21:01 NLazyo 阅读(39) 评论(0) 编辑
  2011年9月1日

 

tabel的重心应该是产生数据列,而ul/ol则是在产生数据级上,所以,一般对于单列多行的数据,且扩展的趋势是产生级的时候,使用ul/ol,扩展的趋势是列的时候,使用TABEL

ul/ol实现两列,只要增加个SPAN,三列给SPAN增加CLASS,还能四列

         

  <ol>

                                  <li>d1<ol><li>a</li></ol></li>

                                  <li>d2<ol><li>b</li></ol></li>

                                  <li>d3<ol><li>c</li></ol></li>

          </ol>//分级

<ol>

                                  <li>d1<span><li>a</li></span></li>

                                  <li>d2<span><li>b</li></span></li>

                                  <li>d3<span><li>c</li></span></li>

   </ol>//一行标题,一行数据

<ol>

                                  <li>d1<span>a</span></li>

                                  <li>d2<span>b</span></li>

                                  <li>d3<span>c</span></li>

   </ol>两列

posted @ 2011-09-01 22:18 NLazyo 阅读(173) 评论(0) 编辑

今天使用SqlDataReader读取数据的时候,不能用,而记取全部数据的时候就能用,编辑一条的时候就不行,晕呀!!出现“在没有任何数据时进行无效的读取尝试”错误。

  DataReader是只向下读取信息的,一条条读的。
    加上判断即可:

    if (reader.read())
     {
        maxid = Convert.ToInt32(read[0]);

     } 
posted @ 2011-09-01 10:04 NLazyo 阅读(15) 评论(0) 编辑
仅列出标题