【转载】图解winform打包程序


这篇文章有38张截图,真心不想弄了,想看的到新浪博客去看吧:http://blog.sina.com.cn/s/blog_9bd43e530101d84n.html

PS:CSDN的这个博客搬家真心不靠谱啊,图片是一个没少全都给我留在新浪博客了!!!发火

郑重声明:以下内容完全源于网络,非本人自创。由于时间已久,无法找到原文出处。现将此文分享,仅为需要帮助的朋友提供方便,别无它意。如有转载,敬请尊重原创!

1.要打包的程序的界面和后台代码截图。

(图1)

(图2)

  1. 功能代码解释。

    1. 最小化到托盘

如(图3)所示,必须先从工具栏中将NotifyIcon控件拖到winForm窗体(如:图1)中。然后如(图4)所示在NotifyIcon的click事件中写如(图5)所示代码。接着如(图6)所示在winform窗体的SizeChanged事件中写如(图5)所示代码。

(图3)

(图4)

 

 

(图5)

(图6)

附代码:

#region 最小化到托盘

privatevoidForm1_Load(object sender,EventArgs e)

{

this.notifyIcon1 =new System.Windows.Forms.NotifyIcon(this.components);

notifyIcon1.Icon =newIcon("87.ico");//指定一个图标

notifyIcon1.Visible= false;

notifyIcon1.Click+= new System.EventHandler(this.notifyIcon1_Click);

this.SizeChanged +=new System.EventHandler(this.Form1_SizeChanged);

 

}

 

privatevoidnotifyIcon1_Click(object sender,EventArgs e)

{

if (WindowState ==FormWindowState.Minimized)

{

notifyIcon1.Visible= false;

}

this.Activate();

ShowInTaskbar =true;

WindowState =FormWindowState.Normal;

}

 

 

privatevoidForm1_SizeChanged(object sender,EventArgs e)

{

if (WindowState ==FormWindowState.Minimized)

{

this.notifyIcon1.Visible =true;

ShowInTaskbar =false;

 

}

}

#endregion

 

  1. 开机自启动功能。

原理:将要启动的程序写入到配置服务的注册表中。注意:如(图8)所示,如果写的名称不对,则本功能就实现不了,因为要执行的程序不是这个程序。

(图7)

(图8)

如下图代码所示:

public Form1()

{

InitializeComponent();

//判断注册表中是否有此值

bool exists = RegeditDirIsExist("OfficeFormOA.exe");

if (exists)

{

WriteRegName();//写入开机自启动注册表

}

timer1.Start();//检测登陆帐户

timer2.Start();//检测合同是否过期

}

 

#region 开机自动执行

/// <summary>

/// 判断启动项目录是否存在

/// </summary>

/// <paramname="dirName"></param>

/// <returns></returns>

bool RegeditDirIsExist(string dirName)

{

RegistryKey key;

RegistryKey subkey;

key = Registry.LocalMachine;

string fullDir ="software\\microsoft\\windows\\currentVersion\";

subkey =key.OpenSubKey(fullDir, true);

foreach (stringkeysinsubkey.GetSubKeyNames())

{

if (keys.ToLower() ==dirName.ToLower())

{

returntrue;

}

 

}

returnfalse;

}

 

/// <summary>

/// 写键值

/// </summary>

void WriteRegName()

{

string DirectoryName =Directory.GetCurrentDirectory();//获取当前目录

 

string regName ="OfficeFormOA.exe"; //加入启动项里的节点名

 

RegistryKey key;

RegistryKey subkey;

RegistryKey mainkey;

string fullDir ="software\\microsoft\\windows\\currentVersion\";

string dir ="run"; ///注册表目录

string filePath = DirectoryName +"\" + regName; //此处注意是系统程序(如:xp下的C:\windows\system32)的话,直接写文件名即可,否则要完整的路径

key = Registry.LocalMachine; //初始化subkey,操作HKEY_LOCAL_MACHINE\software\microsoft\windows\currentVersion\子项

subkey =key.OpenSubKey(fullDir, true);

 

//目录不存在则创建该目录

if (!RegeditDirIsExist(dir))

{

subkey.CreateSubKey(dir);

}

//以可写的方式打开目录

mainkey =key.OpenSubKey(fullDir + dir,true);

mainkey.SetValue(regName,filePath);

}

/// <summary>

/// 删除键值

/// </summary>

void DeleteRegName()

{

 

RegistryKey key;

RegistryKey subkey;

RegistryKey mainkey;

string fullDir ="software\\microsoft\\windows\\currentVersion\";

string dir ="run"; ///注册表目录

string regName ="WindowsFormsApplication1.exe";

 

key = Registry.LocalMachine; ///初始化subkey,操作HKEY_LOCAL_MACHINE\software\microsoft\windows\currentVersion\子项

subkey =key.OpenSubKey(fullDir, true);

mainkey =key.OpenSubKey(fullDir + dir,true);

 

try

{

mainkey.DeleteValue(regName);

}

catch

{

 

}

}

#endregion

  1. 本地程序生成

右击解决方案生成即可。注意:本地程序在生成的时候要使用发布版的,如(图9)所示.

(图9)

 

  1. 开始打包

    打开VS2008,选择【文件】à【新建】à【项目】,打开如(图10)所示界面。在界面中选择【其他项目类型】à【安装和部署】à【安装项目】,设置好"解决方案名称"和"存储位置"后(图11)点确定,打开如(图12)所示界面。

    (图10)

    (图11)

    (图12)

    在(图12)中选择【应用程序文件夹】,右击该文件夹à【添加】à【文件夹】,新建一个【演示安装】文件夹。同理在【用户的"程序"菜单】下也添加一个【演示安装】文件夹。如(图13)所示。

    (图13)

    单击(图13)中的【应用程序文件夹】下的【演示安装】文件夹,然后在右侧的红框里右击à【添加】à【文件】,打开【选择文件的界面】,然后找到要打包的项目所在的文件夹下的【发布(release)】文件夹,如(图14)所示。

    (图14)

    在(图14)中将要加载的内容全部选中,然后点击"打开按钮",出现如(图15)所示的界面。

    (图15)

    右击(图16)中所示的可执行程序,为其创建两个快捷方式(快捷方式改成自己喜欢的名称)。如(图17)所示。然后分别将这两个快捷方式剪切并粘贴到【用户的"程序"菜单】下的【演示安装】和【用户桌面】下。

    (图16)

     

    (图17)

     

如(图18)所示。右击【应用程序文件夹】à【属性】,打开属性框。在属性框中找到"DefaultLocation"属性,将其值"[ProgramFilesFolder][Manufacturer]\[ProductName]"中的"[Manufacturer]"去掉,否则做好的安装程序默认安装目录会是"c:\programmfile\你的用户名\安装解决方案名称"。

(图18)

 

如(图19)所示,右击打包程序的解决方案名称,选择"属性"。打开如(图20)所示界面。点击"系统必备"按钮,弹出如(图21)所示界面,勾选".NETFramework 2.0(x86) "复选框。然后一直点确定按钮。好了,到现在为止,安装包功能已经完成了。

 

 

 

 

(图19)

(图20)

(图21)

现在添加卸载程序功能,在(图22)所示界面中的右边红色框中右击à【添加】à【文件夹】,弹出如(图23)所示"打开文件"的框。在框中选择"c:\windows\system32"文件夹下的"msiexec.exe"文件。结果如(图25)所示。

 

(图22)

 

(图23)

 

(图24)

(图25)

 

可以将"msiexec.exe"改名为"卸载演示安装.exe"(不改也可以),然后为其添加快捷方式(图26)。然后将该快捷方式剪切到【用户的"程序"菜单】文件夹下的【演示安装】文件夹下。

(图26)

单击"项目名称"按F4打开属性框(注意:不是右击出来的属性框)。找到"ProductCode"属性,将其值复制下来。

 

(图27)

在(图28)所示的界面中右击刚刚添加的"卸载"快捷方式,打开属性界面,在属性框中找到"Arguments"属性,在后面的属性值框中输入"/x"然后将刚刚复制的值粘贴到里面,如(图29)所示。

(图28)

 

 

(图29)

 

 

 

 

添加桌面快捷方式的图标

 

 

添加桌面快捷方式的图标。如(图30)所示,右击"演示安装"的快捷方式,打开属性对话框。在属性框中找到"Icon"属性。为其设置图片。在(图31)所示界面中双击"应用程序文件夹"。在(图32)中选择自己需要的图片,假如里面没有图片可以自己到(图22)中右边的红色框中右击à【添加】à【文件】,来添加自己需要的图片。

(图30)

 

 

 

 

 

 

(图31)

(图32)

 

添加最小化后显示在任务栏中的图标(类似QQ的)

在【应用程序文件夹】à【演示程序】下再为可执行程序创建一个快捷方式,右击该快捷方式,打开属性框,在属性中找到"Icon"属性,同在桌面加快捷方式的图标一样设置图片。

(图33)

 

  1. 生成安装包

如下图所示,将运行图标旁的模式调成"Relase",然后右击安装包项目的项目名称,点生成菜单。.NET环境左下方的任务提示生成成功即可。

(图34)

 

  1. 找到安装包所在目录

    右击解决方案名,选择"在windows资源管理器中打开文件夹(x)"(图35),打开"Release"文件夹即可看到打包好的安装包(图36)。

    (图35)

     

    (图36)

  2. 安装好的效果

    桌面快捷方式

    (图37)

    最小化到任务栏

    (图38)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值