Problem with Click Once in Azure

AitorEGAitorEG Member Posts: 342
Hi everyone,
I have an Azure machine with NAV2017 on it. I don't have any problem to run NAV through the Web Client, but I've found an error when I try to instal de ClickOnce tool. The error is the next one;
PLATFORM VERSION INFO
	Windows 			: 6.2.9200.0 (Win32NT)
	Common Language Runtime 	: 4.0.30319.42000
	System.Deployment.dll 		: 4.6.1086.0 built by: NETFXREL4STAGE
	clr.dll 			: 4.6.1086.0 built by: NETFXREL4STAGE
	dfdll.dll 			: 4.6.1086.0 built by: NETFXREL4STAGE
	dfshim.dll 			: 6.3.9600.16384 (winblue_rtm.130821-1623)

SOURCES
	Deployment url			: http://navbeteam2017.cloudapp.net/NAV/Deployment/Microsoft.Dynamics.Nav.Client.application
						Server		: Microsoft-IIS/8.5
						X-Powered-By	: ASP.NET
	Deployment Provider url		: http://navbeteam2017.cloudapp.net/NAV/Deployment/Microsoft.Dynamics.Nav.Client.application

IDENTITIES
	Deployment Identity		: navbeteam2017.cloudapp.net ClickOnce NAV, Version=10.0.0.0, Culture=neutral, PublicKeyToken=0000000000000000, processorArchitecture=msil

APPLICATION SUMMARY
	* Installable application.

ERROR SUMMARY
	Below is a summary of the errors, details of these errors are listed later in the log.
	* Activation of http://navbeteam2017.cloudapp.net/NAV/Deployment/Microsoft.Dynamics.Nav.Client.application resulted in exception. Following failure messages were detected:
		+ Exception reading manifest from http://navbeteam2017.cloudapp.net/NAV/Deployment/ApplicationFiles/Microsoft.Dynamics.Nav.Client.exe.manifest: the manifest may not be valid or the file could not be opened.
		+ Parsing and DOM creation of the manifest resulted in error. Following parsing errors were noticed: 
			-HRESULT: 	0x80070c81
			 Start line: 	0
			 Start column: 	0
			 Host file: 	
		+ Exception from HRESULT: 0x80070C81

COMPONENT STORE TRANSACTION FAILURE SUMMARY
	No transaction error was detected.

WARNINGS
	* The manifest for this application does not have a signature. Signature validation will be ignored.

OPERATION PROGRESS STATUS
	* [23/01/2017 16:14:59] : Activation of http://navbeteam2017.cloudapp.net/NAV/Deployment/Microsoft.Dynamics.Nav.Client.application has started.
	* [23/01/2017 16:14:59] : Processing of deployment manifest has successfully completed.
	* [23/01/2017 16:14:59] : Installation of the application has started.

ERROR DETAILS
	Following errors were detected during this operation.
	* [23/01/2017 16:14:59] System.Deployment.Application.InvalidDeploymentException (ManifestParse)
		- Exception reading manifest from http://navbeteam2017.cloudapp.net/NAV/Deployment/ApplicationFiles/Microsoft.Dynamics.Nav.Client.exe.manifest: the manifest may not be valid or the file could not be opened.
		- Source: System.Deployment
		- Stack trace:
			at System.Deployment.Application.ManifestReader.FromDocument(String localPath, ManifestType manifestType, Uri sourceUri)
			at System.Deployment.Application.DownloadManager.DownloadApplicationManifest(AssemblyManifest deploymentManifest, String targetDir, Uri deploymentUri, IDownloadNotification notification, DownloadOptions options, Uri& appSourceUri, String& appManifestPath)
			at System.Deployment.Application.ApplicationActivator.DownloadApplication(SubscriptionState subState, ActivationDescription actDesc, Int64 transactionId, TempDirectory& downloadTemp)
			at System.Deployment.Application.ApplicationActivator.InstallApplication(SubscriptionState& subState, ActivationDescription actDesc)
			at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
			at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)
		--- Inner Exception ---
		System.Deployment.Application.InvalidDeploymentException (ManifestParse)
		- Parsing and DOM creation of the manifest resulted in error. Following parsing errors were noticed: 
			-HRESULT: 	0x80070c81
			 Start line: 	0
			 Start column: 	0
			 Host file: 	
		- Source: System.Deployment
		- Stack trace:
			at System.Deployment.Application.Manifest.AssemblyManifest.LoadCMSFromStream(Stream stream)
			at System.Deployment.Application.Manifest.AssemblyManifest..ctor(FileStream fileStream)
			at System.Deployment.Application.ManifestReader.FromDocument(String localPath, ManifestType manifestType, Uri sourceUri)
		--- Inner Exception ---
		System.Runtime.InteropServices.COMException
		- Exception from HRESULT: 0x80070C81
		- Source: System.Deployment
		- Stack trace:
			at System.Deployment.Internal.Isolation.IsolationInterop.CreateCMSFromXml(Byte[] buffer, UInt32 bufferSize, IManifestParseErrorCallback Callback, Guid& riid)
			at System.Deployment.Application.Manifest.AssemblyManifest.LoadCMSFromStream(Stream stream)

COMPONENT STORE TRANSACTION DETAILS
	No transaction information is available.

I have tried to create new certificates, change the permission sets, but nothing. Any clue about this issue?

Thank you very much

Best Answer

Answers

  • zaidtariqzaidtariq Member Posts: 52
    Do you see any error/warning in event viewer?
    Best Regards:
    Zaid Tariq
    Dynamics NAV/365 BC Developer at Dynamics 360

    please like / agree / verify my answer, if was helpful.
  • AitorEGAitorEG Member Posts: 342
    zaidtariq wrote: »
    Do you see any error/warning in event viewer?

    In some case, because I change lots of thing about users, credentials.. I've found an error about Active Directory, that the user I'm using isn't in the AD. But I have a NAV2016, also in Azure, and I've configured in the same way...
  • AitorEGAitorEG Member Posts: 342
    avg98c012jm6.png
    This is what I can see
  • AitorEGAitorEG Member Posts: 342
    And also this, but it looks extrange...
    3kt0eddkqobw.png
  • AitorEGAitorEG Member Posts: 342
    I have solved this problem. The problem was that the component wasn't installed in the server, because I didn't open the installation script with the powershell in administrator mode, I just executed the script...
    But now I have one doubt. Is it possible to connect to two different instances from the same server with the ClickOnce client?
  • Jan_VeenendaalJan_Veenendaal Member Posts: 206
    To connect to different instances (on different or on the same server) you need separate ClickOnce installations. It is perfectly possible to have multiple ClickOnce deployments from one server, each connecting to its own service instance.
    Jan Veenendaal
  • vremeni4vremeni4 Member Posts: 323
    Hi,

    Yes you can create as many Clickonce clients as you want and they can go to different instances.
    Important thing is always to use a different self signed certificates (or a real certificate).
    Every Clickonce installation has to have its own self signed certificate.
    You also have to sign both manifests with the self singed certificate .
    Looking at the error message above it looks like you do not sign the manifests.
    WARNINGS
    * The manifest for this application does not have a signature. Signature validation will be ignored.
    If you do not sign the manifests, and you do not use different certificate only one clickonce can be run/used.

    I hope this helps.
  • Jan_VeenendaalJan_Veenendaal Member Posts: 206
    You do NOT need different certificates for different ClickOnce deployments. We have at least 4 different clickonce deployments from 1 server, to 4 different services - and just use 1 certificate (we use a 'real' certificate, not a self-signed. It is a 'wildcard' certifcate though, that allows for several hosts in one domain)
    The certificate is used to ascertain the publisher (which would be you) - so it would be illogical to need more than one.
    Jan Veenendaal
  • vremeni4vremeni4 Member Posts: 323
    Hi Jan_Veenendaal ,

    I know for sure that if you use self signed certificate you need a different self signed certificate for every clickonce deployment. Otherwise when you start the installation of the e.g. second installation it will tell you that the application is already installed.
  • AitorEGAitorEG Member Posts: 342
    Thank you both!!
    Now I'm using a self signed certificate. Our idea is to have one ClickOnce client for our "Real" database, and other for demo purposes, using the demo database. So, i understand that at first, I should create 2 different NAV instaces, am I right? Could those instances run in the same ports? In case of not, I need to open the news ports in the azure manager. After opening the ports, I should initialize again the Virtual machine?
    Your are talking about real certificates. Where can we get those certificates?
    Thank you both again!
  • Jan_VeenendaalJan_Veenendaal Member Posts: 206
    That check is based on the Application identity, that is inside your Deployment manifest; the check is not based on the certificate.

    See the documentation at:
    https://msdn.microsoft.com/en-us/library/hh997056(v=nav.90).aspx

    and search for:
    'Adjust the assembly.assemblyIdentity.name so that it is unique'
    Jan Veenendaal
  • Jan_VeenendaalJan_Veenendaal Member Posts: 206
    If you want the same port then you will need to set op 'TCP Port Sharing'. It may or may not work in your situation - just test.

    You can get a certificate via the internet. You need a certificate for codesigning, and an ssl certificate for your webserver. I do not know if that can be 1 combined certificate.
    Jan Veenendaal
  • AitorEGAitorEG Member Posts: 342
    That check is based on the Application identity, that is inside your Deployment manifest; the check is not based on the certificate.

    See the documentation at:
    https://msdn.microsoft.com/en-us/library/hh997056(v=nav.90).aspx

    and search for:
    'Adjust the assembly.assemblyIdentity.name so that it is unique'

    I think I don't really understand this. It talks about adding "production" or "test" to the name. In my case, the name has his: name="betea2017.cloudapp.net ClickOnce NAV". NAV is the only NAV server instance that I have now in the server. What I understood on that article, is that I should create 2 diferent application manifests. One will be name="betea2017.cloudapp.net ClickOnce NAV-Production" , and the other name="betea2017.cloudapp.net ClickOnce NAV-Test". After editing the first one, I should install ClickOnce on the client side, and after the second change, the same, so I would have 2 diferent ClickOnce installation on the client side, but against the same Database. Am I right??
    But for my goal, that it's to use the "real" database with one client, and the Demo database with another, shouldn't be a better approach to create different instances? I don't really care about port sharing, it's not a problem to create them with different ports and open them after.
  • AitorEGAitorEG Member Posts: 342
    The 'production' and 'test' is just an example. You can use whatever name you like, as long as it is unique.

    You create 1 clickonce deployment for each service instance.
    So if you have 2 service instances, like one for production and one for demo, than you would need 2 clickonce deployments to be available (in different folders) at the same time.

    The difference between the two ClickOnce deployments is not just the name in the manifest: they also need different ClientUserSettings.config files <- there is where your connection information to server names, service names and ports (etcetera) is.

    So clients needing to connect to the demo environment only install the Demo clickonce;
    clients needing the production, install only the Production clickonce;
    and you yourself probably install both.

    Thank you for your help, really apreciate. I will work on it, hopefully I will get the solution, Thank you again!
Sign In or Register to comment.