本篇主要实现的是在BS网页中使用a标签的href链接启动本地安装的CS应用程序(winform C#.exe程序),并能从网页传入参数到应用程序中。实现方式是利用自定义URL Protocol来调用应用程序,在winform程序安装完成后修改注册表,用注册表来启动应用程序。
网上也找了很多资料,主要结合了以下两位的技术分享
http://www.cnblogs.com/wang726zq/archive/2012/12/11/UrlProtocol.html
http://www.cnblogs.com/armyfai/p/5902482.html
下面我做了自己的整理:
winform程序的打包
winform的打包这里不展开,百度下很多。
1、首页创建一个类库项目,添加一个安装程序类,往里添加两个事件,然后往两个事件中编写修改注册表的代码
//安装完成后
this.AfterInstall += new InstallEventHandler(InstallerDemo_AfterInstall);
//卸载完成后
this.AfterUninstall += new InstallEventHandler(InstallerDemo_AfterUninstall);
如下图所示:
整体代码如下:
[RunInstaller(true)]
public partial class InstallerDemo : System.Configuration.Install.Installer
{
public InstallerDemo()
{
InitializeComponent();
this.AfterInstall += new InstallEventHandler(InstallerDemo_AfterInstall);
this.AfterUninstall += new InstallEventHandler(InstallerDemo_AfterUninstall);
}
private string targetdirPath = "";
/// <summary>
/// 安装完成后触发
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void InstallerDemo_AfterInstall(object sender, InstallEventArgs e)
{
//throw new NotImplementedException();
targetdirPath = this.Context.Parameters["targetdir"].TrimEnd('\\');//获取用户设定的安装目标路径, 注意,需要在Setup项目里面自定义操作的属性栏里面的CustomActionData添加上/targetdir="[TARGETDIR]\"
Msg("注册表信息添加开始:");
//Msg("安装路径:" + targetdirPath);
Msg("文件路径:" + Path.Combine(targetdirPath, "mes_wf_test.exe"));
var result= RegeditAdd("tpswftest", Path.Combine(targetdirPath, "mes_wf_test.exe"), "");
Msg(&#