0
我正在嘗試修改ClickOnce部署清單。 我需要做的一件事就是設置清單,將圖標部署到桌面。 爲此,您需要將具有true值的createDesktopShortcut屬性添加到Deployment節點。在子節點上的屬性上需要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 這個前綴似乎是必需的,但是如果你試圖使用電源外殼來創建這個元素,將它添加不帶前綴,使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機器的產品,這會產生很多問題。 –