經過在DigiCert的支持下花費了很多時間在電話上,我們終於找到了一個可行的過程。
在這種情況下,並不是顯而易見的是你最終會做很多代碼簽名。
因此,當您構建VSTO應用程序時,請使用EV證書對代碼進行簽名。然後,當你想發佈(使用ClickOnce)你將不得不再次簽名。
但即使在那之後,你必須重新簽署設置文件兩次更多的時間才能完成這一切!
在此花費大量時間之後,我現在有一個批處理文件執行最後的步驟,包括將設置文件同步到Amazon S3進行部署。
因此,這裏是我如何做到這一點:
- 一旦你安裝了USB加密狗,你設置在Visual Studio中您的應用程序,以引用正確 證書的「簽名」 部分。
- 用鼠標右鍵單擊您的項目,然後單擊
Build
(或Rebuild
爲 保險櫃),您將不得不使用加密狗進行簽名。
- 現在,右鍵單擊該項目,並挑選
Properties
- 內
Properties
去Signing
並確認您選擇了 正確的證書。如果你跳過這一步,應用程序將不會安裝 。
- 仍在裏面
Properties
轉到Publish
並確保將 設置爲您的發佈位置和安裝文件夾。我使用Amazon S3 作爲安裝文件夾。
- 點擊
Publish Now
。它會要求你再次簽名。
現在,你會認爲在這一點上你會完成...但你不是。
- 所以你下一步需要的是一個
.p12
證書。我聯繫了 DigiCert的支持,他們能夠免費給我一個(因爲我有這麼多問題,因此只有一年的問題 )。這是不同於EV證書的 。
- 後你有
.p12
證書和EV,我運行批處理 程序,其中兩次(一次帶有.p12
然後 與EV再次)簽署的setup.exe文件,並推到Amazon S3。
這是我的SignDeploy.bat
文件:
echo off
cls
echo Signing setup.exe with .p12 Certificate File
"C:\Program Files (x86)\Windows Kits\10\bin\x64\signtool.exe" sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /f [LOCATION OF P12 FILE] /p [PASSWORD] [LOCATION OF SETUP.EXE]
pause
echo Signing setup.exe with EV Certificate from Store
"C:\Program Files (x86)\Windows Kits\10\bin\x64\signtool.exe" sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /sha1 [EV HASH FROM DIGICERT] [LOCATION OF SETUP.EXE]
pause
echo Dry run on syncing files up to S3
aws s3 sync [LOCAL DEPLOYMENT FOLDER] [S3 BUCKET AND FOLDER LOCATION] --acl public-read --dryrun
echo
echo If that worked, it's time to send them up for real.
echo Control-C to stop now, or...
pause
aws s3 sync [LOCAL DEPLOYMENT FOLDER] [S3 BUCKET AND FOLDER LOCATION] --acl public-read
pause
畢竟這(我想你最終輸入您的EV證書的密碼,共3次)誰從指定位置下載setup.exe
(必須是同一個用戶如您的應用中所示)將能夠安裝並運行您的VSTO應用程序。
我們在客戶端的安裝過程中遇到了其他問題,但使用上述過程解決了簽名問題。
我不會假裝理解爲什麼需要簽署這麼多次,也沒有任何意義,這並不能從Visual Studio內部順利運行。 DigiCert試圖讓我使用Build Events
來做到這一點,但它不起作用B/C這些進程在BUILD的任一側運行而不是在PUBLISH上運行。我們需要的是我認爲不存在的Publish Events
。
我已經探索了使用MsBuild.exe進行更長時間的更多參與命令行過程的想法,但很難這樣做Automatically increment revision with each release
部件。
也許這裏有人有一個想法如何設置。我的過程還是有點手動的,但在這一點上它似乎可靠地工作,所以我不傾向於太多地混淆它。
你有沒有想過這個? –
是的,我做了...忘了發佈答案...現在就做。 – gotmike
@FrederikHansen - 看看答案...希望有所幫助。 – gotmike