Clickonce internals

Adding your Own Pre-requisite
If we want to add our own Pre-requisite for clickonce app we can use the "Boot Strapper Manifest Generator" (to generate the product.xml and package.xml), installable from the link
https://www.davidguyer.us/bmg/publish.htm

Pre-requisites packages for clickonce are located in  %Microsoft Visual Studio 8%\SDK\2.0\Boot Strapper\ Packages

Modifying the Maifests
Mage and MageUI Tools (mage.exe - command line tool , mageui.exe - GUI ) - Comes with .Net FrameworkSDK / Visual Studio SDK located in  %Microsoft Visual Studio 8%\SDK\2.0\Bin
Used to create\modify  a  new the maifest files.

Reference - https://msdn2.microsoft.com/en-us/library/xhctdw55.aspx

----------------------------------------------------------------------------------------------------------
Clickonce Application Manifest - .manifest extension ( inside the app version folder)
==============
1) assembly element - manifestVersion

<asmv1:assembly manifestVersion="1.0" xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd"

2) assembly identity element - Required. Identifies the application manifest for the ClickOnce application.
 name
 version
 publicKeyToken
 processorArchitecture
 language

<asmv1:assemblyIdentity name="ClickonceTestApp.exe" version="1.0.0.0" publicKeyToken="c4e3b7403e61d2fd" language="neutral" processorArchitecture="msil"

3) Trust info element 
 Application security requirements

  <trustInfo>
    <security>
      <applicationRequestMinimum>
        <PermissionSet class="System.Security.PermissionSet" version="1" Unrestricted="true" ID="Custom" SameSite="site" />
        <defaultAssemblyRequest permissionSetReference="Custom" />
      </applicationRequestMinimum>
    </security>
  </trustInfo>

4) Dependency Element
 Pre-requisite Assemblies
 Install Assemblies
 
 CLR version

  <dependency>
    <dependentAssembly dependencyType="preRequisite" allowDelayedBinding="true">
      <assemblyIdentity name="Microsoft.Windows.CommonLanguageRuntime" version="2.0.50727.0" />
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="ClickonceTestApp.exe" size="28672">
      <assemblyIdentity name="ClickonceTestApp" version="1.0.0.0" language="neutral" processorArchitecture="msil" />
      <hash>
        <dsig:Transforms>
          <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
        </dsig:Transforms>
        <dsig:DigestMethod Algorithm="https://www.w3.org/2000/09/xmldsig#sha1" />
        <dsig:DigestValue>EN6Kbfqo1AU4K4/OpvPEzHl1Ito=</dsig:DigestValue>
      </hash>
    </dependentAssembly>
  </dependency>

5) File Element - Required. Identifies each nonassembly file that is used by the application. Can include Component Object Model (COM) isolation data associated with the file.

Reference URL - https://msdn2.microsoft.com/en-us/library/ws1c2fch.aspx

For Each version of App manifest in the root folder, there are
Source location Ex: Server URL
Install Dependednt Assemblies
Publisher Identity, issuerkeyhash

----------------------------------------------------------------------------------------------------------

Clickonce Deployment  Manifest - .deploy extension ( in the root folder)
==============
App - maifest (without version name)
1) assembly element - manifestVersion

<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0"

2) assembly identity element - Required. Identifies the application manifest for the ClickOnce application.
 name
 version
 publicKeyToken
 processorArchitecture
 language

<assemblyIdentity name="ClickonceTestApp.application" version="1.0.0.2" publicKeyToken="c4e3b7403e61d2fd" language="neutral" processorArchitecture="msil" xmlns="urn:schemas-microsoft-com:asm.v1" />

3) description element -  Required. Identifies application information used to create a shell presence and the Add or Remove Programs item in Control Panel.
 publisher
 product
 supportUrl

<description asmv2:publisher="Microsoft" asmv2:product="ClickonceTestApp" xmlns="urn:schemas-microsoft-com:asm.v1" />

4) Deployment element  -  Optional. Identifies the attributes used for the deployment of updates and exposure to the system.

  <deployment install="true" mapFileExtensions="true">
    <subscription>
      <update>
        <beforeApplicationStartup />
      </update>
    </subscription>
    <deploymentProvider codebase="https://srinivas/ClickonceTestApp/ClickonceTestApp.application" />
  </deployment>

5)Dependency element - Required. Identifies the version of the application to install for the deployment and the location of the application manifest.

  <dependency>
    <dependentAssembly dependencyType="install" codebase="ClickonceTestApp_1_0_0_2\ClickonceTestApp.exe.manifest" size="5842">
      <assemblyIdentity name="ClickonceTestApp.exe" version="1.0.0.2" publicKeyToken="c4e3b7403e61d2fd" language="neutral" processorArchitecture="msil" type="win32" />
      <hash>
        <dsig:Transforms>
          <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
        </dsig:Transforms>
        <dsig:DigestMethod Algorithm="https://www.w3.org/2000/09/xmldsig#sha1" />
        <dsig:DigestValue>s9nT+YQI7jkXCCSYqTu5C4ZVIxw=</dsig:DigestValue>
      </hash>
    </dependentAssembly>
  </dependency>

6) Signature Element - Optional. Contains the necessary information to digitally sign this deployment manifest.

Reference URL  - https://msdn2.microsoft.com/en-us/library/k26e96zf.aspx