2013-08-21 87 views
3

我想要將包含msdeploy.exe的文件夾打包到CI過程結束時的壓縮目標。 我運行下面的命令行視覺工作室使用什麼清單來生成msdeploy包

msdeploy.exe -verb:sync -source:contentpath="C:\SampleWebApp" -dest:package="c:\SampleWebApp.zip" -declareParamFile="parameters.xml" 

我也喜歡* .deploy.cmd和* .SetParameters.xml當它吐出部署包,其產生的msbuild。我重命名了一組* .deploy.cmd和* .SetParameters.xml文件,並相應地更改了內容。能夠在部署環境中運行。

當我運行* .deploy.cmd文件時,它會生成文件夾「C:\ SampleWebApp」,而不是根據.SetParameter.xml中提供的參數創建iis應用程序。

經過一番調查,我發現.cmd部署到-dest:auto這是很好的。但顯然我的軟件包在軟件包內部表明這個軟件包是contentPath,而由msbuild生成的軟件包在使用iisApp提供程序的軟件包中的archive.xml中有更復雜的清單。

說完看了下面的帖子

http://blogs.msdn.com/b/webdev/archive/2013/01/09/real-scenario-folder-deployment-scenarios-with-msdeploy.aspx

我相信,如果我使用-source:清單=「package.xml中」右package.xml中最終的結果應該是類似VS包輸出

我想也許* .SourceManifest.xml是包的清單。我用它構建一個軟件包,但是當我要部署到使用.deploy.cmd它抱怨setAclUser

Error: A value for the 'setAclUser' setting must be specified when the 'setAcl' provider is used with a physical path.

有誰知道這是清單的MSBuild使用?

回答

2

要直接回答您的問題:清單是基於MsDeploySourceManifest MSBuild項目動態生成的。

通過在發佈配置文件(或命令行/p:DeployAsIisApp=false)中聲明DeployAsIisApp=false,可以使其使用contentPath而不是iisApp。這也將禁用setAcl供應商。

如果你想保持iisApp,您可以禁用ACL商...

  1. ...被添加到包在您發佈配置
  2. 聲明IncludeSetAclProviderOnDestination=false ...通過展開經過/I:Falsedeploy.cmd
+0

感謝理查德,但我想我已經找到了正確的清單。 xml和parameter.xml請參閱我的答案 – Ahmadreza

2

以下是清單模板

<?xml version="1.0" encoding="utf-8"?> 
<sitemanifest> 
    <iisApp path="[PATH1]"/> 
</sitemanifest> 

和Parameter.xml模板

<parameters> 
    <parameter name="IIS Web Application Name" defaultValue="WEBSITENAME" tags="IisApp"> 
    <parameterEntry kind="ProviderPath" scope="IisApp" match="^[PATH1ESCAPED]$" /> 
    </parameter> 
    <!-- appSetting section--> 
</parameters> 

注:[PATH1]應該像C您的文件夾路徑所取代:\ MY.FOLDER \ WWW 和[PATH1ESCAPED]應該是相同的路徑,但與後綴逃脫,前綴^ $ like ^ C:\ MY。夾\ WWW $

然後就可以調用像C

"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:manifest="Manifest.xml" -dest:package=%1 -declareParamFile="parameters.xml" 

和1%是文件夾路徑:\ MY.FOLDER \ WWW