我正在使用 MSDeploy 移动许多 IIS 网站,我遇到了一个问题,我试图在移动过程中包含 3 个注册表项,但每个网站上并不总是存在所有 3 个注册表项。
所以问题是:有没有办法让 MSDeploy 移动注册表项,如果它们在源上,如果它们不存在,则静默跳过它们?
我已经尝试过强制启用和禁用 SkipInvalidSource 规则,但它似乎并没有以任何方式影响问题。
最后一点,我正在为源使用清单文件(其中包含 3 个 regKey 提供程序的条目)。
我正在使用 MSDeploy 移动许多 IIS 网站,我遇到了一个问题,我试图在移动过程中包含 3 个注册表项,但每个网站上并不总是存在所有 3 个注册表项。
所以问题是:有没有办法让 MSDeploy 移动注册表项,如果它们在源上,如果它们不存在,则静默跳过它们?
我已经尝试过强制启用和禁用 SkipInvalidSource 规则,但它似乎并没有以任何方式影响问题。
最后一点,我正在为源使用清单文件(其中包含 3 个 regKey 提供程序的条目)。
这里没有足够的信息:
一般来说......您需要确定您正在使用 regKey 提供程序,然后它才能工作:
我敢肯定您已经看到了这一点,但以防万一这里有 2 个参考资料可能会有所帮助:
SkipInvalidSource(跳过无效源规则)[0.50]
如果找不到数据源(例如,您使用 regKey 提供程序并且您指定的注册表项不存在),则跳过来自提供程序的数据同步。默认情况下启用此规则。
警告: 注册表项和值的 ACL 在同步操作中保留,但注册表中的某些路径可能需要管理员权限。如果提供程序没有访问您指定的注册表项的必要权限,它将失败。
这是不删除源包中不存在的目标上的注册表项的示例。
msdeploy -verb:sync -source:package=C:\package.zip -dest:webServer,computerName=DestServer -skip:skipAction=Delete,objectName=regKey