ClickOnce-Anwendungsmanifest
Ein ClickOnce-Anwendungsmanifest ist eine XML-Datei, die eine Anwendung beschreibt, die mit ClickOnce bereitgestellt wird.
ClickOnce-Anwendungsmanifeste verfügen über die folgenden Elemente und Attribute.
Element | Beschreibung | Attribute |
---|---|---|
<assembly>-Element | Erforderlich. Ein Element der obersten Ebene. | manifestVersion |
<assemblyIdentity>-Element | Erforderlich. Gibt die primäre Assembly der ClickOnce-Anwendung an. | name version publicKeyToken processorArchitecture language |
<trustInfo>-Element | Gibt die Sicherheitsanforderungen der Anwendung an. | Keine |
<entryPoint>-Element | Erforderlich. Gibt den Einstiegspunkt des Anwendungscodes an. | name |
<dependency>-Element | Erforderlich. Gibt jede Abhängigkeit an, die für die Ausführung der Anwendung erforderlich ist. Gibt optional Assemblys an, die vorinstalliert werden müssen. | Keine |
<file>-Element | Optional. Gibt jede Nicht-Assemblydatei an, die von der Anwendung verwendet wird. Kann COM-Isolationsdaten (Component Object Model) enthalten, die der Datei zugeordnet sind. | name size group optional writeableType |
<fileAssociation>-Element | Optional. Gibt eine Erweiterung an, die der Anwendung zugeordnet werden soll. | extension description progid defaultIcon |
Hinweise
Die ClickOnce-Anwendungsmanifestdatei identifiziert eine Anwendung, die mit ClickOnce bereitgestellt wurde. Weitere Informationen zur ClickOnce-Bereitstellung finden Sie unter ClickOnce security and deployment (ClickOnce-Sicherheit und Bereitstellung).
Dateispeicherort
Ein ClickOnce-Anwendungsmanifest ist für eine einzelne Version einer Bereitstellung spezifisch. Aus diesem Grund müssen sie getrennt von Bereitstellungsmanifesten gespeichert werden. Die allgemeine Konvention besteht darin, sie in einem Unterverzeichnis zu platzieren, das nach der zugeordneten Version benannt ist.
Das Anwendungsmanifest muss vor der Bereitstellung immer signiert werden. Wenn Sie ein Anwendungsmanifest manuell ändern, müssen Sie mage.exe verwenden, um das Anwendungsmanifest erneut zu signieren, das Bereitstellungsmanifest zu aktualisieren und dann das Bereitstellungsmanifest erneut zu signieren. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Manuelles Bereitstellen einer ClickOnce-Anwendung.
Dateinamenssyntax
Der Name einer ClickOnce-Anwendungsmanifestdatei muss den vollständigen Namen und die Erweiterung der Anwendung, wie im assemblyIdentity
-Element angegeben, gefolgt von der MANIFEST-Erweiterung aufweisen. Beispielsweise würde ein Anwendungsmanifest, das auf die Anwendung Example.exe verweist, die folgende Syntax für den Dateinamen verwenden.
example.exe.manifest
Beispiel
Das folgende Codebeispiel zeigt ein Anwendungsmanifest für eine ClickOnce-Anwendung.
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2" xmlns="urn:schemas-microsoft-com:asm.v2" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1">
<asmv1:assemblyIdentity name="My Application Deployment.exe" version="1.0.0.0" publicKeyToken="43cb1e8e7a352766" language="neutral" processorArchitecture="x86" type="win32" />
<application />
<entryPoint>
<assemblyIdentity name="MyApplication" version="1.0.0.0" language="neutral" processorArchitecture="x86" />
<commandLine file="MyApplication.exe" parameters="" />
</entryPoint>
<trustInfo>
<security>
<applicationRequestMinimum>
<PermissionSet Unrestricted="true" ID="Custom" SameSite="site" />
<defaultAssemblyRequest permissionSetReference="Custom" />
</applicationRequestMinimum>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!--
UAC Manifest Options
If you want to change the Windows User Account Control level replace the
requestedExecutionLevel node with one of the following.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
If you want to utilize File and Registry Virtualization for backward
compatibility then delete the requestedExecutionLevel node.
-->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentOS>
<osVersionInfo>
<os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
</osVersionInfo>
</dependentOS>
</dependency>
<dependency>
<dependentAssembly dependencyType="preRequisite" allowDelayedBinding="true">
<assemblyIdentity name="Microsoft.Windows.CommonLanguageRuntime" version="4.0.20506.0" />
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="MyApplication.exe" size="4096">
<assemblyIdentity name="MyApplication" version="1.0.0.0" language="neutral" processorArchitecture="x86" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<dsig:DigestValue>DpTW7RzS9IeT/RBSLj54vfTEzNg=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<publisherIdentity name="CN=DOMAINCONTROLLER\UserMe" issuerKeyHash="18312a18a21b215ecf4cdb20f5a0e0b0dd263c08" /><Signature Id="StrongNameSignature" xmlns="http://www.w3.org/2000/09/xmldsig#">
...
</Signature></r:issuer></r:license></msrel:RelData></KeyInfo></Signature></asmv1:assembly>