Original report by me.
Currently uninstall is performed one by one, and each assembly is converted into deployment just before the uninstall.
It has been noted that uninstall sometimes produces errors because the assembly has already been uninstalled. This probably happens because the assembly is parented to another one higher in the uninstall order, and uninstalled with the parent.
This would certainly happen if it's parent was already a deployment. This might perhaps happen when its parent was not a deployment, but was converted to one (perhaps its dependencies then would be deleted with it).
Several mitigations are possible.
We may remove all dependencies from every assembly we turn into deployment. But that might not make sense even for assemblies which weren't deployments, and even less so for those that were: of course we want to uninstall them with their contents.
We may reparent all assemblies from the uninstall list first. Then every assembly will be standalone.
We may do the above as a part of "turn into deployment" (and run all "turns" first). That might make sense: deployments should probably parented to anything. Or it might not.
We may find all packages that are children to any other one in the selection, and remove them from the selection. They will be uninstalled anyway.
Original report by me.
Currently uninstall is performed one by one, and each assembly is converted into deployment just before the uninstall.
It has been noted that uninstall sometimes produces errors because the assembly has already been uninstalled. This probably happens because the assembly is parented to another one higher in the uninstall order, and uninstalled with the parent.
This would certainly happen if it's parent was already a deployment. This might perhaps happen when its parent was not a deployment, but was converted to one (perhaps its dependencies then would be deleted with it).
Several mitigations are possible.
We may remove all dependencies from every assembly we turn into deployment. But that might not make sense even for assemblies which weren't deployments, and even less so for those that were: of course we want to uninstall them with their contents.
We may reparent all assemblies from the uninstall list first. Then every assembly will be standalone.
We may do the above as a part of "turn into deployment" (and run all "turns" first). That might make sense: deployments should probably parented to anything. Or it might not.
We may find all packages that are children to any other one in the selection, and remove them from the selection. They will be uninstalled anyway.