gpt4 book ai didi

msdeploy - 使用msdeploy创建软件包时,为提供程序iisApp指定不同的路径

转载 作者:行者123 更新时间:2023-12-03 12:42:46 25 4
gpt4 key购买 nike

我如何制作包装
我使msdeploy包是这样的:

msdeploy.exe -verb:sync -source:iisApp=c:\content\ -dest:package=c:\pkg.zip

c:\ content目录只有一个index.html文件。
结果
输出看起来像这样:
Info: Adding package (package).
Info: Adding child iisApp (c:\content\).
Info: Adding child createApp (c:\content\).
Info: Adding child contentPath (c:\content\).
Info: Adding child dirPath (c:\content\).
Info: Adding child filePath (c:\content\index.html).
Total changes: 6 (6 added, 0 deleted, 0 updated, 0 parameters changed, 0 bytes copied)

如果我将c:\ pkg.zip的内容提取到目录c:\ pkg中,则如下所示:
archive.xml
systemInfo.xml
Content\c_C
Content\c_C\content
Content\c_C\content\index.html

如果我这样转储软件包:
msdeploy.exe -verb:dump -source:package=c:\pkg.zip -xml

我得到:
<output>
<MSDeploy.iisApp>
<iisApp path="c:\content\">
<createApp
path="c:\content\"
isDest="False"
managedRuntimeVersion=""
enable32BitAppOnWin64=""
managedPipelineMode=""
applicationPool=""
appExists="True" />
<contentPath path="c:\content\">
<dirPath
path="c:\content\"
securityDescriptor="D:"
parentSecurityDescriptors=""
attributes="Directory">
<filePath
path="index.html"
size="0"
attributes="Archive"
lastWriteTime="07/07/2011 20:58:00"
securityDescriptor="D:" />
</dirPath>
</contentPath>
</iisApp>
</MSDeploy.iisApp>
</output>


我希望它成为
我不希望软件包依赖于站点文件的当前位置。我将把包裹发送给客户,并且我不希望随包裹附带任何有关包裹过程的细节。我希望包c:\ pkg.zip的内容如下所示:
archive.xml
systemInfo.xml
Content\index.html

我希望该程序包能够创建IIS应用程序,因此我需要一个虚拟路径。我也想将软件包安装到默认位置。因此,物理路径也必须改变。我希望转储看起来像这样:
<output>
<MSDeploy.iisApp>
<iisApp path="Default Web Site\Site">
<createApp
path="Default Web Site\Site"
isDest="False"
managedRuntimeVersion=""
enable32BitAppOnWin64=""
managedPipelineMode=""
applicationPool=""
appExists="False" />
<contentPath path="c:\inetpub\wwwroot\site">
<dirPath
path="c:\inetpub\wwwroot\site"
securityDescriptor="D:"
parentSecurityDescriptors=""
attributes="Directory">
<filePath
path="index.html"
size="0"
attributes="Archive"
lastWriteTime="07/07/2011 20:58:00"
securityDescriptor="D:" />
</dirPath>
</contentPath>
</iisApp>
</MSDeploy.iisApp>
</output>

我已将iisApp和createApp提供程序的路径属性更改为 Default Web Site\Site。然后将contentPath和dirPath提供程序的路径属性更改为 c:\inetpub\wwwroot\site

问题

我该怎么做?

最佳答案

您需要查看MS Deploy替换规则,这是一个有用的功能well hidden on the MS Deploy Team Blog

对于您的情况,您将需要使用一堆替换表达式来扩展命令行,如下所示:

msdeploy.exe 
-verb:sync
-source:iisApp=c:\content\
-dest:package=c:\pkg.zip
-replace:objectName=iisApp,targetAttributeName=path,
replace="Default Website\Site"
-replace:objectName=createApp,targetAttributeName=path,
replace="Default Website\Site"
-replace:objectName=contentPath,targetAttributeName=path,
replace="c:\inetpub\wwwroot\site"
-replace:objectName=dirPath,targetAttributeName=path,match="^c:\content",
replace="c:\inetpub\wwwroot\site"


运行此命令将产生所需的输出。

在上面的示例中,前3个替换规则通过标记名( objectName)和属性名( targetAttributeName)匹配,并使用指定的替换字符串覆盖。
最后一个替换规则将匹配所有以“ c:\ content”开头的所有 dirPath标记的所有路径属性,并且仅将属性值的那一部分替换为替换字符串。

最后,我还没有找到一种方法来避免软件包zip文件包含原始源文件夹名称。唯一的解决方法是从中立的临时位置(如“ c:\ site”)进行打包。

所以过程是:


将您的东西复制到中立的临时位置。
从这里创建您的包。
使用动词:dump查看生成的xml。
使用添加的替换规则再次创建您的程序包,以替换您要在程序包中更改的所有内容。
服用头痛药;-)

关于msdeploy - 使用msdeploy创建软件包时,为提供程序iisApp指定不同的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6617373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com