VS2017打包注冊IE插件及修改IE安全選項設置


 

前言

最近項目需要在瀏覽器環境下讀取員工身份證信息,要實現網頁與硬件設備通信,考慮了幾種實現方式:

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自解壓文件將兩個文件打包到一起,一鍵安裝

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM