前言

最近项目需要在浏览器环境下读取员工身份证信息,要实现网页与硬件设备通信,考虑了几种实现方式:

1.借助ActiveX插件,通过程序库直接与设备通信。

优点:厂家提供了IE插件,开发简单

缺点:只能在IE浏览器运行,webkit下访问需要跳转IE,体验不友好

2.开发客户端程序,通过http与网页通信。其有两种策略:

  • 开发基于HTML/Javascript的Chrome插件,直接与客户端本地端口通信。

优点:我们的系统多在webkit环境运行,无痛兼容,无视跨域。

缺点:开发较复杂,用户需要同时安装插件及客户端。

  • 经过中间服务器中转,客户端通过http提交读卡数据;网页通过websocket或者http查询服务器;

优点:兼容所有浏览器环境

缺点:需要仔细设计,避免多用户数据错乱,保证响应速度

同时,为方便用户使用,以上方案都需要设置自定义协议,以在网页中直接调起应用程序(IE或客户端)。

一、打包IE插件

1.安装打包插件

vs2017并没有自带安装项目模板,需要自行下载安装。

https://marketplace.visualstudio.com/search?target=VS&category=Tools&vsVersion=&subCategory=All&sortBy=Downloads

搜索Microsoft Visual Studio 2017 Installer Projects,下载安装即可。

2.创建安装项目

3.设置基础属性

选中项目,打开属性面板,可以设置项目相关的基本属性信息。

其中比较有用的设置如上,部分基本信息会显示在控制面板的【添加/删除程序】列表里。

默认安装的路径为programs/[Manufacture]/[ProductName],所以可以根据需要设置属性Manufacture的值。

当然默认安装路径可以修改,稍后介绍。

4.添加打包内容

项目右键菜单切换到文件系统视图

Application Folder即安装后的程序目录,我们需要把要安装的内容添加进去。根据实际情况,选择项目输出或者直接添加文件 。

项目输出是指要打包的内容是解决方案里另一个项目的输出结果。

我这里要打包的内容为厂家提供的插件,所以选择了直接添加文件。

5.设置文件属性

由于打包的内容是浏览器插件,需要注册到系统才能使用。而安装项目已经提供了这样的自动注册功能。

选择要注册的文件,点属性菜单设置注册方式即可。属性菜单还有其它设置项,可根据需要设置。

6.修改默认安装路径

选中程序目录,打开属性面板,修改默认路径即可。(可以留意一下这里的TARGETDIR)

7.设置注册表

由于IE默认的安全设置,对插件运行不太友好。我们通过注册表设置可以修改它。

项目右键菜单切换到注册表视图

以下注册表项完成了对ActiveX相关设置的修改

启用 下载已签名的 ActiveX 控件
启用 下载未签名的 ActiveX 控件
启用 运行 ActiveX 控件和插件
启用 对没有标记为安全的 ActiveX 控件进行初始化和脚本运行
启用 允许以前未使用的 ActiveX控件在没有提示的情况下运行
启用 对标记为可安全执行脚本的 ActiveX 控件执行脚本
启用 ActiveX 控件自动提示
取消 对该区域中的所有站点要求服务器验证(https:)

添加可信站点

Domains下可添加域名站点,Ranges下添加IP站点,区别只在于域名只需要设置http键即可。

图中cmurl183可随意填写。

8.设置安装界面

项目右键菜单切换到安装界面视图

安装界面可修改的范围比较小,可以根据需要删除一些界面

9.添加自定义操作(可选)

通过自定义操作我们可以在安装前后、或者卸载时执行一些特殊的业务逻辑。比如操作环境变量等。

项目右键菜单切换到自定义操作视图

显示了安装的各个阶段,右键菜单即可添加需要执行的动作来源。

由于只能添加程序目录的可执行文件(exe,dll)或者脚本文件,我们需要新建一个项目来编写自定义逻辑。(最后需要将项目输出添加到”文件系统视图“的程序目录)

添加自定义动作库项目

新建类库项目

库项目中新建安装类

实现自定义逻辑

using Microsoft.Win32;
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Diagnostics;
using System.Linq; namespace InstallClassLibrary
{
[RunInstaller(true)]
public partial class Installer1 : System.Configuration.Install.Installer
{
public Installer1()
{
InitializeComponent(); this.AfterInstall += Installer1_AfterInstall;
this.BeforeUninstall += Installer1_BeforeUninstall;
} private void Installer1_AfterInstall(object sender, InstallEventArgs e)
{
//System.Diagnostics.Debugger.Launch();
//获取用户设定的安装目标路径, 注意,需要在Setup项目里面自定义操作的属性栏里面的CustomActionData添加上/targetdir="[TARGETDIR]\"
string installPath = this.Context.Parameters["targetdir"];
installPath = installPath.TrimEnd('\\') + "\\";
//后续业务逻辑
} private void Installer1_BeforeUninstall(object sender, InstallEventArgs e)
{
//获取用户设定的安装目标路径, 注意,需要在Setup项目里面自定义操作的属性栏里面的CustomActionData添加上/targetdir="[TARGETDIR]\"
string installPath = this.Context.Parameters["targetdir"];
installPath = installPath.TrimEnd('\\') + "\\";
}
}
}

代码通过自定义参数targetdir获得用户选择的安装路径,这个参数需要从外部传入。设置方法如图

注意:

1.[TARGETDIR]后的反斜杠一定不能少,否则安装会报错。

2.如果设置了Commit动作,一定要设置Install动作,否则安装会报错。

10.设置启动条件

大家都知道.net框架开发的程序都依赖于framework才能运行。我们可以通过启动条件设置,当只有当客户机上有framework时才能安装成功 ;否则弹出下载询问框让用户选择安装framework。

切换到启动条件视图,选中.net framework,打开属性面板,设置目标版本即可。同时为保证下载速度,可以修改下载路径。

11.编译生成

编译成功后生成两个文件,setup.exe为启动文件(不依赖.net),另一个为安装包程序。

为避免用户选择,可以利用rar自解压文件将两个文件打包到一起,一键安装

VS2017打包注册IE插件及修改IE安全选项设置的更多相关文章

  1. VS2017打包注册IE插件及修改IE安全选项设置【转】

    前言 最近项目需要在浏览器环境下读取员工身份证信息,要实现网页与硬件设备通信,考虑了几种实现方式: 1.借助ActiveX插件,通过程序库直接与设备通信. 优点:厂家提供了IE插件,开发简单 缺点:只 ...

  2. vs2017 C# ActiveX浏览器插件 创建 发布 C# windows窗体控件库(.NET Framework)注意事项

    vs2017需要安装插 插件下载地址:https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.Micro ...

  3. Win7 系统下 Firefox hostadmin插件无法修改Host

    问题:  win 7系统,今天用杀毒软件杀了一下毒,firefox hostAdmin插件无法修改Host了,提示“ write hosts file failed check permissions ...

  4. windows 系统下 Firefox hostadmin插件无法修改Host

    firefox hostAdmin插件无法修改Host了,提示“ write hosts file failed check permissions”,肯定是权限出现了问题??? 使用管理员权限打开c ...

  5. 将ECSHOP会员注册页面的Email修改成非必填项

    将ECSHOP会员注册页面的Email修改成非必填项 ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2011-07-29   有人说,在后台的 “会员注册项设置 ”里面 ...

  6. 【问题】Win7 系统下 Firefox hostadmin插件无法修改Host

    今天遇到一个奇葩问题:win 7系统,firefox hostAdmin插件无法修改Host了,提示“ write hosts file failed check permissions”,肯定是哪里 ...

  7. vs2017打包安卓项目简述

    1.使用vs2017创建安卓项目 2.选择Release模式编译项目 3.项目存档 4.签名分发 存档完成后,点击分发按钮进入如下界面 按要求输入签名信息 选择apk保存位置 5.分享apk文件 参考 ...

  8. Atitit. 注册表操作查询 修改 api与工具总结 java c# php js python 病毒木马的原理

    Atitit. 注册表操作查询 修改 api与工具总结 java c# php js python 病毒木马的原理 1. reg 工具 这个cli工具接口有,优先使用,jreg的要调用dll了,麻烦的 ...

  9. Inno Setup 注册表启动项 修改注册表

      //注册表启动项 [Registry] Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ...

随机推荐

  1. 洛谷P1066 2^k进制数(题解)(递推版)

    https://www.luogu.org/problemnew/show/P1066(题目传送) (题解)https://www.luogu.org/problemnew/solution/P106 ...

  2. Day055--MySQL--外键的变种,表与表的关系,单表查询,多表查询, 内连接,左右连接,全外连接

    表和表的关系 ---- 外键的变种 * 一对多或多对一 多对多 一对一 参考 https://www.cnblogs.com/majj/p/9169416.html 如何找出两张表之间的关系 分析步骤 ...

  3. spring问题

    1.The matching wildcard is strict ,but no declaration can be found for element 'tx:annotation-driven ...

  4. gzy的摄影梦

    好像当身高180的摄影师啊. 记录一下素材,等自己有相机了,就一一实现. 竟然有人在看哎. 一袭红衣的女子,将手伸出窗外,开心的看这漫天大雪. 今天的晚霞,近处是蓝色,颜色逐渐变淡,一直延伸到远处.( ...

  5. 【踩坑】利用fastjson反序列化需要默认构造函数

    利用 fastjson等 反序列化时需要注意,他可能会用到 默认的构造函数,如果没有默认构造函数,某些场景下可能会出现 反序列化熟悉为空的情况,如下图所示:

  6. python3 动态import

    有些情况下,需要动态的替换引入的包 1.常用的import方法 import platform import os 2.__import__ 动态引用 loop_manager = __import_ ...

  7. 【Unity游戏开发】tolua之wrap文件的原理与使用

    本文内容转载自:https://www.cnblogs.com/blueberryzzz/p/9672342.html .非常感谢原作者慷慨地授权转载,比心!@blueberryzzz 是位大神,欢迎 ...

  8. Precision 7520双硬盘无法识别固态硬盘

    将RAID ON 修改为AHCI,如图1,会使得 win10无法 启动,如图2 图 1 图 2 可以开legacy,如图3,让电脑可以从u盘启动,如图4,但是也无法查看到固态硬盘 图 3 图 4 网上 ...

  9. 我的长大app开发教程第一弹:Fragment布局

    在接下来的一段时间里我会发布一个相对连续的Android教程,这个教程会讲述我是如何从零开始开发“我的长大”这个Android应用. 在开始之前,我先来介绍一下“我的长大”:这是一个校园社交app,准 ...

  10. SQL解析

    private static String getCountSql(String sql) { return "select count(*) from "+cutOrderByO ...