2016-02-29 92 views
0

我創建了一個Windows窗體應用程序使用c#的應用程序的輸出是.exe,在這個項目的引用中,我添加了許多dll的引用,這個項目需要所有這些引用都是創建的但是這些引用的dll,其中一些正在使用第三個Dll。包簽名和數字證書

我使用wix Toolset在安裝程序項目中打包了.exe和所有引用的dll。

請注意,.exe和安裝程序沒有強名稱,也沒有使用密鑰簽名。

我把這個.msi結果文件上傳到內聯網服務器,但是當用戶通過谷歌瀏覽器從內聯網下載它時,它會給出如圖1所示的警告信息。 Chrome warning

當用戶雙擊下載後的.msi文件啓動安裝過程時,會激活windows智能屏幕。 Smart screen warning

,並在運行安裝程序會顯示黃色的橫幅用戶帳戶控制提示,如圖三。[Windows智能屏幕警告] [3]

我做了很多invistigations的,我不得不發現,這是因爲我的代碼沒有用數字證書進行數字簽名,實際上我沒有這方面的經驗,我不知道這是真正的原因還是什麼。

我是否需要通過從.net的簽名選項卡簽署程序集來強制簽署.exe,我也沒有關於演唱可執行程序包的經驗。

所有我需要的是,我不希望用戶覺得他正在下載並運行不受信任的東西。

如果原因是包需要數字證書,我是否需要用強名稱來裝配程序集才能用數字證書對其進行簽名?

回答

0

Windows將經過驗證的發佈者發佈的所有應用程序視爲不可信的應用程序。如果你想讓你的應用程序信任你的應用程序數字簽名。

  1. 首先購買代碼簽名證書。可以從Godaddy說最便宜的(https://in.godaddy.com/web-security/code-signing-certificate)。購買證書後,只需按照godaddy上的程序獲取您的證書(.pfx)文件即可。
  2. 安裝Visual Studio表達
  3. 安裝的InstallShield生成.exe文件
  4. 您可以通過使用InstallShield輕鬆地註冊與證書的輸出。詳情請參閱截圖。 enter image description here
+0

非常感謝您的快速回放和答案,我只需要問幾個問題。關於你的觀點[Install InstallShield for .exe]爲什麼我必須安裝shhiled,什麼是.exe我應該生成?我以爲我應該購買證書,然後用它來簽署my.msi軟件包,使用microsoft SDK中存在的signtool.exe。 2 - 我可以使用Visual Studio創建一個測試證書,並使用它來使用signtool.exe簽署我的.msi文件.3 - 如果我購買了證書並使用它作爲你建議簽署我的.msi軟件包,它將如何在用戶機器上信任? – Laila

+0

您可以繼續使用TestCertificate並使用Signtool.exe簽署.msi。首先生成TestCertificate並安裝在您用來簽署.exe或.msi的機器中。之後,嘗試運行應用程序,你會看到發行商的名字。TestCertificate只適用於您的機器。如果您購買證書,請在您用於簽署.exe或.msi的計算機上安裝該證書。他們試圖在任何機器上運行,你會看到出版商的名字。 – null1941

+0

Installshield是SoftwareTool,用於創建具有代碼簽名等功能的安裝程序。使用這個軟件簽名應用程序非常簡單(使用Signtool.exe進行內部簽名)。 :) – null1941