web-dev-qa-db-fra.com

Comment définir le site Web de destination sur la ligne de commande MSDeploy.exe

J'ai un package Web Deploy 3.5 que je souhaite déployer sur un serveur distant. Comment spécifier le nom du site sur la ligne de commande MSDeploy.exe?

Voici ce que j'ai jusqu'à présent:

C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe
    -source:package='package.Zip' 
    -dest:auto,computerName="ServerName",includeAcls="False" 
    -verb:sync 
    -disableLink:AppPoolExtension 
    -disableLink:ContentExtension 
    -disableLink:CertificateExtension 
    -setParamFile:"package.SetParameters.xml"

Mais le nom du site est spécifié dans le fichier package.SetParamters.xml et je préférerais le définir sur la ligne de commande. Certains des emplacements sur lesquels je souhaite déployer ce package sont différents sites situés sur le même serveur, tels que nos sites Stage et UAT.

J'ai envisagé d'utiliser les fournisseurs iisApp et appHostConfig décrits ici: http://technet.Microsoft.com/en-us/library/dd569040%28v=ws.10%29.aspx

Mais je ne parviens pas à les utiliser avec un fichier de package.

12
dthrasher

Vous pouvez le remplacer en utilisant setParam:

msdeploy.exe
    -source:package='package.Zip' 
    -dest:auto,computerName="ServerName",includeAcls="False" 
    -verb:sync 
    -disableLink:AppPoolExtension 
    -disableLink:ContentExtension 
    -disableLink:CertificateExtension 
    -setParamFile:"package.SetParameters.xml"
    -setParam:name="IIS Web Application Name",value="site name"
19
Richard Szalay

Pour faire la même chose dans Powershell (voir Réponse de Richard Szalay ), vous devez être un peu prudent en ce qui concerne la gestion des arguments en ligne de commande, en particulier lorsque des espaces sont impliqués. Je trouve qu'il est préférable de les passer comme un tableau où les arguments de ligne de commande souhaités sont effectivement divisés sur le caractère d'espace. Notez que les lignes ci-dessous sont séparées par des virgules et que le nom du paramètre "Application Web IIS" est fractionné. J'ai laissé celui-ci sur une ligne pour une meilleure lisibilité.

$msdeploy = "C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe";

$msdeployArguments = 
    '-source:package="package.Zip"',
    '-dest:auto,computerName="<ServerName>",includeAcls="False"',
    '-verb:sync',
    '-disableLink:AppPoolExtension',
    '-disableLink:ContentExtension',
    '-disableLink:CertificateExtension',
    '-setParam:name="IIS', 'Web', 'Application', 'Name",value="<WebsiteName>"'

& $msdeploy $msdeployArguments

Mise à jour

J'ai eu des problèmes lorsque je suis retourné pour paramétrer le site Web Name. Comme j'avais utilisé des guillemets simples pour les chaînes, j'ai choisi d'utiliser la concaténation plutôt que interpolation de chaîne . Malheureusement, les virgules qui délimitent les éléments du tableau semblent avoir été évaluées avant la concaténation. Le résultat était qu'au lieu de concaténer des chaînes dans un élément de tableau, je concaténais de nouveaux éléments dans le tableau. Ma solution consistait à utiliser des parenthèses pour entourer l'élément de tableau et à forcer la concaténation à être effectuée en premier.

$msdeployArguments = 
    '-source:package="package.Zip"',
    ('-dest:auto,computerName="' + $webServerName + '",includeAcls="True"'),
    '-verb:sync',
    '-disableLink:AppPoolExtension',
    '-disableLink:ContentExtension',
    '-disableLink:CertificateExtension',
    '-setParam:name="IIS', 'Web', 'Application', ('Name",value="' + $websiteName + '"');
13
Scott Munro

J'ai essayé toutes les réponses à partir d'ici (et essentiellement toutes les réponses sur Internet), aucune d'entre elles ne fonctionnait pour moi. Pas certain de pourquoi. Ensuite, j'ai trouvé this page qui explique comment utiliser MSDeploy pour BackUps (je viens de l'inverser pour l'utiliser pour le déploiement). Le secret est " contentPath ". Ce qui est un peu trompeur, car dans ce cas ce n’est pas un chemin sur le disque (cependant, j’ai vu des exemples qui l’utilisaient pour passer dans le chemin physique du site hébergé). Mais je ne voulais pas utiliser le chemin physique. Et tu n'es pas obligé! L'astuce est la suivante: il peut contenir le site Web ou le site enfant (dans IIS yoursite.com/shop, je suppose donc qu'il s'agit d'un chemin d'accès dans IIS).

Utilisation pour la sauvegarde:

msdeploy –verb:sync -source:contentPath="yoursite.com" -dest:package=c:\Backups\yoursite.Zip

Utilisation à déployer:

msdeploy –verb:sync -source:package=c:\Deployment\yoursite.Zip -dest:contentPath="yoursite.com"

Je perdais presque une journée avec declareParam, setParam, etc ... Cependant, c'est si simple!

J'espère que ça aide...

1
Major