2010-02-03 47 views
1

(部署的ClickOnce)我使用的MSBuild用設置-url =「位置」 ......改變SETUP.EXE的URL中使用的MSBuild

我發佈使用ClickOnce應用程序,我想在SETUP.EXE的URL改變。

<Exec Command="$(PublishDir)\setup -url=$(ProviderUrl)" /> 

另一個問題是,使用/ URL開關來改變出在URL後,它出現的消息,用於手動確認簽名將被傷病的組件。

兩個問題:

  1. 如何使用安裝-url = HTTP:// ......在無聲模式?我不想讓這個消息出現在確認中。

  2. 如何重新簽名setup.exe?

有關它的任何解決方案?感謝老總

我的MSBuild

<Target Name="PublishClickOnce"> 

<Exec Command="$(PublishDir)\setup -url=$(ProviderUrl)" /> 

<Exec Command="$(Mage) -u $(PublishDir)\Frk.Security.CarWin.application -pu $(ProviderUrl)" /> 

<Exec Command="$(Mage) -u $(PublishDir)\Frk.Security.CarWin.application -cf $(CertDir)\Frk.Security.CarWin_TemporaryKey.pfx" /> 

</Target> 

任何幫助,請?提前致謝。

+1

這不是你昨天的問題的重複嗎? http://stackoverflow.com/questions/2185201 – codeConcussion 2010-02-03 16:37:34

回答

2

這是我們如何樹立TeamBuild ClickOnce應用程序的多個環境

你可以閱讀我的原創博文here

這是你如何調用的ClickOnce從你們建設TeamBuild項目文件(增加了可讀性換行) :

<Msbuild 
     Projects="$(SolutionRoot)\ConfigFiles\BuildClickOnce.targets" 
     Targets="BuildClickOnce" 
     Properties="SourceDir=$(SourceDir);PublishDir=$(PublishDir);      ClickOnceAppName=$(ClickOnceAppName);ClickOnceExeFile=$(ClickOnceExeFile);      ClickOnceProduct=$(ClickOnceProduct);Company=$(Company);      ClickOnceDescription=$(ClickOnceDescription);ClickOnceUrl=$(ClickOnceUrl);      VersionNumber=$(VersionNumber);SigningCert=$(SigningCert);      SigningCertPassword=$(SigningCertPassword)" 
     /> 

對於每個環境或配置更改,您希望使用此選項。下面你找到BuildClickOnce.targets文件(增加了可讀性換行):

<?xml version="1.0" encoding="utf-8"?> 
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TeamBuild\Microsoft.TeamFoundation.Build.targets" /> 
    <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/> 
    <Import Project="$(MSBuildExtensionsPath)\Microsoft\SDC\Microsoft.Sdc.Common.tasks"/> 


    <Target Name="BuildClickOnce" DependsOnTargets=""> 

     <PropertyGroup>  
      <ClickOnceApplicationUrl>$(ClickOnceUrl)$(ClickOnceAppName).application</ClickOnceApplicationUrl> 
      <AppPublishDir>$(PublishDir)</AppPublishDir> 
      <SdkPath>C:\Program Files\Microsoft SDKs\Windows\v6.0A</SdkPath> 
     </PropertyGroup> 

     <BuildStep 
      TeamFoundationServerUrl="$(TeamFoundationServerUrl)" 
      BuildUri="$(BuildUri)" 
      Message="Buildning $(ClickOnceAppName) ClickOnce version: $(VersionNumber)"> 
      <Output TaskParameter="Id" PropertyName="StepId" /> 
     </BuildStep> 


    <CallTarget Targets="UpdateWebPage" /> 

     <!-- 
    ************************************************ 
    Generate application manifest 
    ************************************************ 
    --> 
     <Exec 
     Command="mage.exe -New Application -TrustLevel FullTrust     -ToFile &quot;$(AppPublishDir)\$(ClickOnceExeFile).manifest&quot;     -Name &quot;$(ClickOnceAppName)&quot; -Version &quot;$(VersionNumber)&quot;     -FromDirectory &quot;$(AppPublishDir)&quot;" 
     WorkingDirectory="$(SdkPath)\Bin"/> 

     <!-- 
    ************************************************ 
    Signing application manifest 
    ************************************************ 
    --> 
     <Exec Condition="'$(SigningCertPassword)'==''" 
      Command="mage.exe -Sign &quot;$(AppPublishDir)\$(ClickOnceExeFile).manifest&quot;     -CertFile &quot;$(SigningCert)&quot;" 
      WorkingDirectory="$(SdkPath)\Bin" /> 

     <Exec Condition="'$(SigningCertPassword)'!=''" 
      Command="mage.exe -Sign &quot;$(AppPublishDir)\$(ClickOnceExeFile).manifest&quot;      -CertFile &quot;$(SigningCert)&quot; -Password &quot;$(SigningCertPassword)&quot;" 
      WorkingDirectory="$(SdkPath)\Bin"/> 

     <!-- 
    ************************************************ 
    Renaming source files to .deploy 
    ************************************************ 
    --> 
     <ItemGroup> 
      <SourceFilesToRename Include="$(AppPublishDir)\**\*.*"     Exclude="$(AppPublishDir)\*.manifest;$(AppPublishDir)\*.htm"/> 
      <SourceFilesToDelete Include="$(AppPublishDir)\**\*.*"     Exclude="$(AppPublishDir)\*.application;$(AppPublishDir)\*.manifest;$(AppPublishDir)\*.htm"/> 
     </ItemGroup> 

     <Copy 
      SourceFiles="@(SourceFilesToRename)" 
      DestinationFiles="@(SourceFilesToRename->'$(AppPublishDir)\%(RecursiveDir)%(Filename)%(Extension).deploy')" 
     /> 

     <Delete Files="@(SourceFilesToDelete)"/> 


     <!-- 
    ************************************************ 
    Generating deployment manifest 
    ************************************************ 
    --> 

     <GenerateDeploymentManifest 
      MapFileExtensions="true" 
      AssemblyName="$(ClickOnceAppName).application" 
      AssemblyVersion="$(VersionNumber)" 
      MinimumRequiredVersion="$(VersionNumber)" 
      DeploymentUrl="$(ClickOnceApplicationUrl)" 
      Description="$(ClickOnceDescription)" 
      Product="$(ClickOnceProduct)" 
      Publisher="$(Company)" 
      SupportUrl="$(SupportUrl)" 
      EntryPoint="$(AppPublishDir)\$(ClickOnceExeFile).manifest" 
      Install="true" 
      UpdateEnabled="true" 
      UpdateMode="Foreground" 
      OutputManifest="$(PublishDir)\$(ClickOnceAppName).application"/> 

     <!-- 
    ************************************************ 
    Signing application manifest 
    ************************************************ 
    --> 
     <Exec Condition="'$(SigningCertPassword)'==''" 
      Command="mage.exe -Sign &quot;$(PublishDir)\$(ClickOnceAppName).application&quot;      -CertFile &quot;$(SigningCert)&quot;" 
      WorkingDirectory="$(SdkPath)\bin"/> 
     <Exec Condition="'$(SigningCertPassword)'!=''" 
      Command="mage.exe -Sign &quot;$(PublishDir)\$(ClickOnceAppName).application&quot;      -CertFile &quot;$(SigningCert)&quot; -Password &quot;$(SigningCertPassword)&quot;" 
      WorkingDirectory="$(SdkPath)\bin"/> 


     <!-- 
    ************************************************ 
    Generating Bootstrapper 
    ************************************************ 
    --> 
     <ItemGroup> 
      <BootstrapperFile Include="Microsoft.Net.Framework.2.0"> 
       <ProductName>Microsoft .NET Framework 2.0</ProductName> 
      </BootstrapperFile> 
     </ItemGroup> 


     <GenerateBootstrapper 
      ApplicationFile="$(ClickOnceAppName).application" 
      ApplicationName="$(ClickOnceAppName)" 
      ApplicationUrl="$(ClickOnceUrl)" 
      BootstrapperItems="@(BootstrapperFile)" 
      Culture="en" 
      FallbackCulture="en-US" 
      CopyComponents="true" 
      Validate="false" 
      Path="$(SdkPath)\Bootstrapper" 
      OutputPath="$(PublishDir)"/> 


     <BuildStep 
      TeamFoundationServerUrl="$(TeamFoundationServerUrl)" 
      BuildUri="$(BuildUri)" 
      Id="$(StepId)" 
      Status="Succeeded"/> 

     <OnError ExecuteTargets="MarkBuildStepAsFailed" /> 
    </Target> 

    <!-- 
    ************************************************ 
    Marks a buildstep as failed 
    ************************************************ 
    --> 
    <Target Name="MarkBuildStepAsFailed"> 
     <BuildStep 
      TeamFoundationServerUrl="$(TeamFoundationServerUrl)" 
      BuildUri="$(BuildUri)" 
      Id="$(StepId)" 
      Status="Failed"/> 
    </Target> 

    <!-- 
    ************************************************ 
    Updating web page 
    ************************************************ 
    --> 
    <Target Name="UpdateWebPage"> 
     <ItemGroup> 
      <WebPage Include="$(PublishDir)\publish.htm" /> 
     </ItemGroup> 

     <RegEx 
      Condition="Exists(@(WebPage))" 
      Path="@(WebPage)" 
      RegularExpression="#VERSION#" 
      NewValue="$(VersionNumber)" 
      Force="true"/> 
    </Target> 
</Project> 
0

如果你想改變的網址,你最好做:

  1. 編輯。應用和替換網址在deploymentProvider
  2. 使用GenerateBootstrapper從建立一個新的setup.exe
  3. 登錄應用程序和設置

我發現使用-url參數使我的簽名後設置無效