2010-02-03 8 views
1

J'utilise msbuild pour l'utilisation -url de configuration = "location" ...change url de setup.exe (déploiement ClickOnce) en utilisant MSBuild

Je publie application à l'aide ClickOnce et je veux l'URL change dans le setup.exe .

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

Un autre problème est que après avoir utilisé le commutateur/URL pour changer l'URL, il apparaît un message pour confirmer manuellement que la signature sera pour l'assemblage réformé.

deux questions:

  1. comment utiliser la configuration -url = http: // .... en mode silencieux ?? Je ne veux pas que cela apparaisse le message pour confirmer. Comment peut-on encore signer le setup.exe?

une solution à ce sujet? Merci MISTER

Mon 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> 

Toute aide, s'il vous plaît? Merci d'avance.

+1

N'est-ce pas un doublon de votre question d'hier? http://stackoverflow.com/questions/2185201 – codeConcussion

Répondre

2

Ce que nous construisons des applications ClickOnce avec TeamBuild pour plusieurs environnements

Vous pouvez lire mon blogpost d'origine here

Voici comment vous appelez la construire ClickOnce de vous TeamBuild fichier de projet (sauts de ligne ajouté pour une meilleure lisibilité) :

<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)" 
     /> 

Pour chaque modification d'environnement ou de configuration que vous souhaitez utiliser. Ci-dessous vous trouverez le fichier BuildClickOnce.targets (sauts de ligne ajoutée pour une meilleure lisibilité):

<?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

Si vous voulez changer l'URL que vous êtes mieux faire:

  1. Modifier le .Application et remplacez la url dans le deploymentProvider
  2. Utilisez GenerateBootstrapper de construire un nouveau setup.exe
  3. application Signez et configuration

J'ai trouvé que l'utilisation du paramètre -url rendait la configuration invalide après que je l'ai signée

Questions connexes