2013-06-01 59 views
3

我正在使用ClickOnce應用程序部署,並且剛剛從Verisign獲得了我的代碼證書。我正在使用此證書籤署清單。使用Visual Studio 2012,清單已簽名,但程序集不是

當我下載並安裝應用程序時,smartscreen上出現我的名字(跛腳,但我認爲這是應該發生的)。當ClickOnce安裝程序完成時,智能屏幕會再次出現以執行實際應用程序,在此處顯示「未知發行人」。

默認情況下,ClickOnce是否未簽署程序集?我該怎麼做呢?

編輯:目前,我正在讓VS爲ClickOnce簽署我的清單(安裝程序),並且我正在設置Post-build事件來簽署我的程序集。但是當我安裝應用程序時,它會說'我不知道發佈者',當我去實際運行它時。

回答

0

這聽起來不正確。我已經爲多個應用程序使用完全相同的工作流程,並且工作正常。您的後期製作步驟最有可能存在問題。確保你在OBJ文件夾內簽名EXE文件(因爲這是ClickOnce所有文件的來源) - 而不是BIN。

做ClickOnce發佈,轉到OBJ文件夾,右鍵單擊您的application.exe文件,然後選擇屬性。它應該有六個選項卡 - 最後一個是「數字簽名」:

Enter image description here

如果沒有它,你不正確簽名的應用程序。

這裏是我的postbuild步 - 注意,我籤「釋放」唯一配置:

<Target Name="SignOutput" AfterTargets="CoreCompile" Condition="'$(ConfigurationName)'=='Release'"> 
    <PropertyGroup> 
     <TimestampServerUrl>http://timestamp.verisign.com/scripts/timestamp.dll</TimestampServerUrl> 
     <ApplicationDescription>my app</ApplicationDescription> 
     <SigningCertificateCriteria>/n "my company."</SigningCertificateCriteria> 
    </PropertyGroup> 
    <ItemGroup> 
     <SignableFiles Include="$(ProjectDir)obj\$(ConfigurationName)\$(TargetName)$(TargetExt)" /> 
    </ItemGroup> 
    <Exec Condition=" '$(ConfigurationName)'=='Release'" Command="&quot;c:\Program Files (x86)\Windows Kits\8.0\bin\x64\signtool.exe&quot; sign $(SigningCertificateCriteria) /d &quot;$(ApplicationDescription)&quot; /t &quot;$(TimestampServerUrl)&quot; &quot;%(SignableFiles.Identity)&quot;" /> 
    </Target> 
相關問題