Dot-Net
ClickOnce 設計了我們的執行檔並顯示“未知發布者”
我們正在開發一個通過 ClickOnce 部署的應用程序。我們有一個 VeriSign 程式碼簽名證書,用於對我們的應用程序(通過
signtool.exe後期建構)和 ClickOnce 清單進行簽名。我們目前有兩個與簽名相關的問題:
- 我們正在使用我們的證書籤署我們的 .exe。在建構我們的應用程序之後,我們可以看到它已被簽名(例如,通過“signtool verify /pa TheExecutable.exe”)。但是通過 ClickOnce 安裝應用程序後,.exe 不再簽名。
- 我們正在使用我們的證書籤署 ClickOnce 清單。但是當我們嘗試通過 ClickOnce 安裝應用程序時,ClickOnce 安裝程序會顯示“未知發布者”。
問題 #1 一直存在。問題 #2 有時會神秘地消失,但它總是在此後不久又回來,而且我們已經持續看到它幾個星期了。
有任何想法嗎?
好的,解決了這個問題 1/2 的謎題:ClickOnce 從 獲取應用程序清單
bin,但從 獲取實際的 EXEobj。為了分發您簽名的 exe,您必須對obj目錄中的文件進行簽名。**編輯:**這是另一半。安裝 .NET 4.5 Beta 會中斷 ClickOnce 簽名/驗證,即使在 VS2010 中也是如此。
這是我處理簽署清單和簽署 exe 的方式。我將此添加到我的 .csproj 文件的底部(在文本編輯器中編輯它)。
<Target Name="AfterBuild"> <CallTarget Targets="SignOutput" /> </Target> <Target Name="SignOutput"> <PropertyGroup> <TsUrl>http://timestamp.comodoca.com/rfc3161</TsUrl> </PropertyGroup> <ItemGroup> <SignableFiles Include="$(ProjectDir)obj\$(ConfigurationName)\myappname.exe" /> </ItemGroup> <Exec Command="signtool.exe sign /n "My Company Name LLC" /tr $(TsUrl) "%(SignableFiles.Identity)"" /> </Target>