Я пытаюсь внести изменения в манифест развертывания ClickOnce. Одна вещь, которую мне нужно сделать, это настроить манифест для развертывания значка на рабочем столе. Для этого вам нужно добавить атрибут createDesktopShortcut с истинным значением для узла развертывания.Требовать префикс пространства имен xml для атрибута в дочернем узле
Например, это фрагмент рабочего файла развертывания (есть некоторые незначительные изменения).
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd"
manifestVersion="1.0"
xmlns:asmv1="urn:schemas-microsoft-com:asm.v1"
xmlns="urn:schemas-microsoft-com:asm.v2"
xmlns:asmv2="urn:schemas-microsoft-com:asm.v2"
xmlns:xrml="urn:mpeg:mpeg21:2003:01-REL-R-NS"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"
xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1"
xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2">
<assemblyIdentity name="My.app" version="1.2.3.4" publicKeyToken="redacted" language="neutral" processorArchitecture="x86" xmlns="urn:schemas-microsoft-com:asm.v1" />
<deployment trustURLParameters="true" install="true"
minimumRequiredVersion="1.2.3.4"
co.v1:createDesktopShortcut="true">
<subscription>
<update>
<beforeApplicationStartup />
</update>
</subscription>
<deploymentProvider codebase="redacted" />
</deployment>
</asmv1:assembly>
Обратите внимание, что атрибут «createDesktopShortcut» с префиксом пространства имен co.v1 Этот префикс, как представляется, требуется, однако, если вы пытаетесь использовать Power Shell для создания этого элемента будет добавить его без префикса, что делает xml недействительным.
[xml]$DeploymentManifest = Get-Content -Path $DeploymentPath
$DeploymentManifest.assembly.SetAttribute("xmlns:co.v1", "urn:schemas-microsoft-com:clickonce.v1")
$DeploymentManifest.assembly.deployment.SetAttribute('co.v1:createDesktopShortcut',
'true')
Это приводит к следующему тегу развертывания:
<deployment trustURLParameters="true" install="true"
minimumRequiredVersion="1.2.3.4"
createDesktopShortcut="true" >
Это было бы хорошо, однако ClickOnce не может показаться, чтобы обработать этот атрибут без префикса. Любое руководство в любом направлении относительно того, почему это происходит или как я могу чисто обойти его, оценили.
Я просто хочу, чтобы рекомендовать против ручной модификации ClickOnce манифеста развертывания. Это создает множество проблем. После большой работы я вернулся к гораздо более стандартному подходу, и его работа стала намного понятнее. Чтобы быть понятным, это было частью процесса переноса сертификата на SHA256 для продукта, ориентированного на машины .NET 4.0, что создает ряд проблем. –