Dot-Net

ClickOnce 設計了我們的執行檔並顯示“未知發布者”

  • June 10, 2013

我們正在開發一個通過 ClickOnce 部署的應用程序。我們有一個 VeriSign 程式碼簽名證書,用於對我們的應用程序(通過signtool.exe後期建構)和 ClickOnce 清單進行簽名。我們目前有兩個與簽名相關的問題:

  1. 我們正在使用我們的證書籤署我們的 .exe。在建構我們的應用程序之後,我們可以看到它已被簽名(例如,通過“signtool verify /pa TheExecutable.exe”)。但是通過 ClickOnce 安裝應用程序後,.exe 不再簽名。
  2. 我們正在使用我們的證書籤署 ClickOnce 清單。但是當我們嘗試通過 ClickOnce 安裝應用程序時,ClickOnce 安裝程序會顯示“未知發布者”。

問題 #1 一直存在。問題 #2 有時會神秘地消失,但它總是在此後不久又回來,而且我們已經持續看到它幾個星期了。

有任何想法嗎?

好的,解決了這個問題 1/2 的謎題:ClickOnce 從 獲取應用程序清單bin,但從 獲取實際的 EXE obj。為了分發您簽名的 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>

引用自:https://stackoverflow.com/questions/10392201