airsdk / Adobe-Runtime-Support

Report, track and discuss issues in Adobe AIR. Monitored by Adobe - and HARMAN - and maintained by the AIR community.
204 stars 11 forks source link

Windows 11 - Cannot install AIR runtime - version 33.1.1.743 #1742

Open radubirsan opened 2 years ago

radubirsan commented 2 years ago

A client reported not being able to install AIR runtime - version 33.1.1.743

Logged in to TeamViewer it is a new laptop that with Window 11 Por N 21H2 220000.434

"This application requires a version of adobe AIR which cannot be found...."

The PC has a Norton Security software on the leptops but disabling it is not an option.

This might be related to another [issue](https://github.com/airsdk/Adobe-Runtime-Support/issues/1715

ajwfrost commented 2 years ago

Can you manually install it from the shared runtime installer: https://airsdk.harman.com/assets/downloads/AdobeAIR.exe and once this is installed, the application installer should then work..

thanks

radubirsan commented 2 years ago

Yes that is what I meant, they cannot manually install Adobe AIR runtime. They get the "This application requires a version of adobe AIR which cannot be found...." when running the AdobeAIR.exe. I installed Windows 11 in VMWare and could not reproduce it but, we connected using TeamViewer to one of there laptops. Tried to download AIR Runtime from the link you shared and after running it we get the error.

ajwfrost commented 2 years ago

That's quite odd! Do you know if there's already a version of AIR from Adobe that is installed, or anything within C:\Program Files (x86)\Common Files\Adobe AIR

radubirsan commented 2 years ago

I deleted everything, from Common Files, uninstalled anything from Adobe in control panel. Downloaded the shared runtime 33 ran it from command prompt ( with admin rights ) tries to add the -silent parameter also tried -uninstall and they all show the same popup CaptureUninsatllAIR

radubirsan commented 2 years ago

logairfail Found this in the common files folder. Deleted it. PS: tried downloading https://en.softonic.com/download/adobe-air/windows/post-download/v/32.0.0.125 and I get the same error

ajwfrost commented 2 years ago

Okay thanks - so it looks like there's something in your Windows 11 implementation that is 'missing' which the AIR runtime depends on. I'm not sure why it works for us, presumably there are differences in the components that may be installed on different machines running Windows 11....

The way we'd normally investigate this is to use the "Dependency Walker" to load up the Adobe AIR.dll file, and see what libraries/symbols it says are missing. It's a bit slow/painstaking sometimes, so it would be simplest if we're able to reproduce it here, let me see if I can get a machine set up similar to your earlier mention of "Window 11 Por N 21H2 220000.434" (i.e. the Jan 11th update it seems)

ajwfrost commented 2 years ago

Actually one thing that it may be worth doing: if you can download the AIR SDK for Windows, and extract that onto the Windows 11 machine, can you then go into a command prompt and navigate to the "bin" folder, and run "adl.exe"? It should just give you some usage instructions...

The other thing would be to check in the Windows\syswow64 folder that the following libraries are present - or just copy/paste this into a command prompt which will list the files, see whether there's a "File Not Found" message!

dir /b c:\windows\syswow64\kernel32.dll
dir /b c:\windows\syswow64\user32.dll
dir /b c:\windows\syswow64\ole32.dll
dir /b c:\windows\syswow64\oleaut32.dll
dir /b c:\windows\syswow64\winspool.drv
dir /b c:\windows\syswow64\winmm.dll
dir /b c:\windows\syswow64\oleacc.dll
dir /b c:\windows\syswow64\crypt32.dll
dir /b c:\windows\syswow64\ws2_32.dll
dir /b c:\windows\syswow64\gdi32.dll
dir /b c:\windows\syswow64\msimg32.dll
dir /b c:\windows\syswow64\advapi32.dll
dir /b c:\windows\syswow64\version.dll
dir /b c:\windows\syswow64\comdlg32.dll
dir /b c:\windows\syswow64\shell32.dll
dir /b c:\windows\syswow64\shlwapi.dll
dir /b c:\windows\syswow64\wininet.dll
dir /b c:\windows\syswow64\msi.dll
dir /b c:\windows\syswow64\urlmon.dll
dir /b c:\windows\syswow64\comctl32.dll
dir /b c:\windows\syswow64\mscms.dll
dir /b c:\windows\syswow64\secur32.dll
dir /b c:\windows\syswow64\dsound.dll
dir /b c:\windows\syswow64\iphlpapi.dll
dir /b c:\windows\syswow64\dnsapi.dll

thanks

radubirsan commented 2 years ago

Running adl.exe output:

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>adl.exe Adobe AIR could not be found. Use "-runtime

" to specify the location of the runtime. You can download the latest version of the runtime from http://www.adobe.com/go/getair.

All files are found:

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\kernel32.dll kernel32.dll

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\user32.dll user32.dll

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\ole32.dll ole32.dll

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\oleaut32.dll oleaut32.dll

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\winspool.drv winspool.drv

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\winmm.dll winmm.dll

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\oleacc.dll oleacc.dll

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\crypt32.dll crypt32.dll

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\ws2_32.dll ws2_32.dll

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\gdi32.dll gdi32.dll

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\msimg32.dll msimg32.dll

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\advapi32.dll advapi32.dll

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\version.dll version.dll

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\comdlg32.dll comdlg32.dll

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\shell32.dll shell32.dll

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\shlwapi.dll shlwapi.dll

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\wininet.dll wininet.dll

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\msi.dll msi.dll

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\urlmon.dll urlmon.dll

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\comctl32.dll comctl32.dll

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\mscms.dll mscms.dll

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\secur32.dll secur32.dll

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\dsound.dll dsound.dll

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\iphlpapi.dll IPHLPAPI.DLL

C:\Users\Administrator\Downloads\AIRSDK_Windows (1)\bin>dir /b c:\windows\syswow64\dnsapi.dll dnsapi.dll

TeamViewer 897 761 801 rpeiqmkf

ajwfrost commented 2 years ago

Okay thanks .. so basically then, the AIR DLL has got a dependency upon a function within one of those libraries, but the library no longer has that function available.

Is it possible for you to use Dependency Walker please? The steps would be: 1) Download (probably the default = 32-bit) from https://dependencywalker.com/ (here's a direct link to the zip file) and extract the files somewhere. 2) Run the depends.exe and open the Adobe AIR.dll file 3) Once it's loaded (which can take a while), dismiss the error dialog and then "collapse all" the libraries listed in the top left pane. Then you can just click on the "+" and have a list of the direct dependencies.... 4) Select each of these direct dependencies in turn, and look at the top right pane where you should see a list of the imported functions with a green flag against each of them.

If there are any red flags i.e. functions that it's trying to import from a DLL that are missing, then we have our culprit, and we can switch to dynamic loading/detection of the symbols for that library....

See a picture of what we're looking for below...

many thanks

image

radubirsan commented 2 years ago

I loaded the AIR32 DLL, here is the result file, you can load it in Dependency Walker Adobe AIR.zip

radubirsan commented 2 years ago

image

radubirsan commented 2 years ago

I rand https://github.com/lucasg/Dependencies and got these missing dll errors: Capture6 Capture7 Capture1 Capture2 Capture3 Capture5

radubirsan commented 2 years ago

Also found these in lower folders: EdgeGdiInitialize, ext-ms-win-gdi-edgegdi-l1-1-0.dll, False, None N/A, 6 (0x00000006), GetCapabilitySidsEx, ext-ms-win-security-chambers-l1-1-0.dll, False, None etc..

There are a lot of layers to dig down into, it will be time consuming to expand all possible Dll's. Again the issue is on at least 2 Brand new Windows 11 Laptops:

image

Can we schedule a time next week where we can give you remote access to try an fix this?

ajwfrost commented 2 years ago

Hi You can likely ignore all those, they're finding odd dependencies that we don't actually have. The Dependency Walker didn't find any issues though (assuming that the loaded information that I see isn't actually checking the DLLs on my own machine...!) We can arrange a time for me to check directly if that works, the other thing I can try to do is create a quick utility that runs through these programmatically which may be simpler. thanks

radubirsan commented 2 years ago

Yes, I can install the utility, will wait for it, thank you

ajwfrost commented 2 years ago

Okay so we now have a utility that goes through all the dependent DLLs and checks that they have the right functions where we load them by name (and that the ordinals haven't changed where we import those)... are you able to run this please, and if it fails then please let us know what the log says? You can just run it from a command prompt... if you also pass as an argument, the AIR DLL, then it will also try to load that and report the Windows error code...

e.g.

c:\>  AIRDependencyCheck.exe "i:\SDKs\33.1.1.743\runtimes\air\win\Adobe AIR\Versions\1.0\Adobe AIR.dll"

AIRDependencyCheck.zip

thanks

radubirsan commented 2 years ago

DependencyChackLOG.txt

ajwfrost commented 2 years ago

Thank you! So there's the culprit: despite having the DLL in your Windows system folder:

ERROR: could not load DLL -> dsound.dll

The good news is that it appears this isn't actually used any more in AIR! The code and comments show that DirectSound was used in the past for early versions of Windows (up to XP?) but then they switched to a new audio method. The DirectSound code is still present hence this dependency, but we should be able to strip it out and remove that dependency without any impact on our current platform (Windows 7 upwards).

Thank you for the help finding this! Weird that it's a bit hit-and-miss with different Win11 machines...

radubirsan commented 2 years ago

Good to hear that you found the bug/solution. I can test if you have a beta AIR dll. Is there a way the client can fix this on there laptops?

ajwfrost commented 2 years ago

Sounds like this may be a known issue (or at least, there are others experiencing the same problem). Reading up on the Windows 11 compatibility promise, all they say is that they'll work with the vendor to fix the issue, so I think this is one that we need to update... I'm curious as to why that DLL fails to load, it's not just that the symbols are changed but the library is failing when we call LoadLibrary on it. Not sure whether the Dependency Walker can give any information about it, I was wondering as a temporary workaround we could just create a new/dummy dsound.dll, which can be put into the same location as the executable. Not 100% sure whether that would work, I'll see if we can try it...

... okay yes this may work! See below for a zip containing a dummy "dsound.dll" which just has the two functions we need at the appropriate ordinals. If you can put this where the application .exe file is, it should work. So if you're packaging up an application using a "bundle" and the captive runtime, you can add this file afterwards alongside your generated .exe file before you package it up. For the AIR shared runtime installers, it may be possible to do this if you unzip the AdobeAIR.exe file and then copy the dll into that root folder, then run the installer .exe file...

dsound.zip

thanks

radubirsan commented 2 years ago

image

Unzipping the AIR shared runtime and adding the dll, worked and I could install the runtime but trying to run test.exe or test.air, produces the same error ( tried air 32 and air 33 )

radubirsan commented 2 years ago

https://helpx.adobe.com/air/build/adt-commands.html#:~:text=%2DairDownloadURL%20Specifies%20an%20alternate%20URL%20for%20downloading%20and%20installing%20the%20AIR%20runtime%20on%20Android%20devices.%20If%20not%20specified%2C%20an%20AIR%20application%20will%20redirect%20the%20user%20to%20the%20AIR%20runtime%20on%20the%20Android%20Market%20if%20the%20runtime%20is%20not%20already%20installed.

I tried this option but it dose not work, sees it as invalid argument: adt -package -storetype pkcs12 -keystore TestSMP.p12 -storepass test -tsa http://sha256timestamp.ws.symantec.com/sha256/timestamp -airDownloadURL https://airsdk.harman.com/assets/downloads/AdobeAIR.exe -target air test.air test-app.xml test.swf

probably it is only for Android

ajwfrost commented 2 years ago

So to get it to work with the test.exe, I'm not 100% sure what that's doing - the icon suggests it's a self-extracting zip so it would have the same challenges... the test.air will trigger a process called "Adobe AIR Application Installer.exe" so you'd need the dsound.dll to also be put into "C:\Program Files (x86)\Common Files\Adobe AIR\Versions\1.0"

We'll get a release out in the next week or so to fix all this..

thanks

MariusDuP commented 2 years ago

Has a release been brought out yet to fix this, I have exactly the same problem and followed all the above steps with the same results, still not able to install Adobe Air.

Thanks

ajwfrost commented 2 years ago

@MariusDuP it's currently going through our QA processes, should be finished by Friday and then I need to get the web team to upload it..

thanks

radubirsan commented 2 years ago

Please update this thread once the update is on the website. So we can test

ajwfrost commented 2 years ago

@radubirsan this has just gone live...

thanks

MariusDuP commented 2 years ago

Where can we get the update from?

ajwfrost commented 2 years ago

The shared AIR runtime can be found at: https://airsdk.harman.com/runtime

or direct link for Windows: https://airsdk.harman.com/assets/downloads/AdobeAIR.exe

thanks

radubirsan commented 2 years ago

I tried the shared runtime and it works fine on Windows 11 & 10. I also tired packaging app with Animate CC & AIR 33.1.1.821 Running the exe file on a windows without AIR Shared Runtime gives the following error: "This application cannot be installed because this installer has been mis-configured. Please contact the application author for assistance."

radubirsan commented 2 years ago

Will Herman support the shared runtime distribution model, even though it is "not recommended", my employer wants to buy a license specifically for the Shared Runtime distribution model.

ajwfrost commented 2 years ago

Hi

So looking at what happens if you try to run an installer exe file on a machine without AIR installed -> yes I think we need to update this process...! I had thought for a while that we should update the "native installer" mechanism so that it actually includes the runtime as well, though maybe we'll be able to keep them slimmer and just add in the extra infrastructure that it needs...

It's not really the application author who can do anything about that error message though ...!

In terms of the shared runtime, we are fine with companies distributing that internally to their employees' machines. Adobe had a separate licensing mechanism for the runtimes that were then distributed in conjunction with applications but that's where we would prefer the applications to include the runtimes via the bundle mechanism.

I think where we'd like to end up: a) with the "native" package type so that this actually works i.e. you can give this to anyone to install, it would work as long as they've got AIR already (or as long as they're internet-connected, once we've fixed it) b) with the "bundle" mechanism like we have now -> captive runtime and an executable c) with the bundle turned into an installer, which would eliminate the dependency on the shared runtime but would simplify this for people if we can actually generate an MSI file for example..!

thanks

radubirsan commented 2 years ago

@ajwfrost , my company bought a SDK here is the result on Windows 10 machine. a) "native" package outputs exe when run we get on the local PC: image

After manually downloading and installing AIR Runtime 33. Rerunning the installer gives flowing error: image

ajwfrost commented 2 years ago

Hi

If you've got the SDK, then it would be better if you can create a "bundle" output rather than the "native" one. The bundle includes the appropriate runtime...

But, if you've already installed the AIR runtime 33.1, then it should then install; can you confirm what version of the shared runtime you currently have installed on this? and can you share the installation log (maybe wipe out the log file prior to trying to install the above .exe?) %LocalAppData%\Adobe\AIR\logs\Install.log

thanks

radubirsan commented 2 years ago

I can confirm that if I install the runtime v 33.1.1.821 and then run the "native" installer the application installs.

If I uninstall AIR Runtime, and the application delete the Install.log and run the native installer I get this: image

Can you confirm that this is still a issue with AIR SDK 33.1.1.821 "native" installer packaging?

ajwfrost commented 2 years ago

With 821 yes, this is the expected (bad) behaviour. The next SDK release will not try the step of trying to download the runtime from Adobe's servers, since (a) as you can see, it doesn't help as the Adobe runtime can't cope with the 33.1-based application namespace; and (b) at some point those downloads will be turned off (I'm surprised they still work!)

So for a while the installers (when built with 33.1.1.856 onwards) should just display a message saying you need to install the shared runtime as a manual/separate step, before you run the installer again. The full solution of course is to host our own runtime installer and certificate info etc as required so that the above all works again .. but we'd much prefer people to use the captive/bundled runtime (and are considering changing the 'native' option so that it includes the captive runtime anyway...)

thanks

thanks

markdemich commented 1 year ago

What's the status of of this. I'm having a similar issue. I don't understand what's the difference between native and bundle of native doesn't seamlessly install? Can someone explain?

Ender22 commented 1 year ago

@markdemich Something like this:

In the past, it was common for many people to have the air runtime installed on their devices, which could run any air apps, or if the user didn't have it installed they'd have to go through 2 steps for an app to work, first to download the air runtime and then to download the app (native approach). Now however, nearly all developers have switched to bundling the air runtime with the app together, so that the only step is to install the app since it already includes the runtime. (bundle approach)

Vagnerking commented 1 year ago

The solution is to place the dll in the root folder of the program you are trying to open.

https://github.com/airsdk/Adobe-Runtime-Support/files/8253919/dsound.zip

waveofthought-code commented 1 year ago

I have just run in to this issue with one of my testers, but on a Mac. Captive runtime build (of course), running 50.2.2.3

My tester is running on an M1 with Ventura 13.2.1

image

Works fine for me on Windows 10 and an x86 Mac using Monterey 12.6.1 I have literally never seen this issue before today.

Edit: Got tester to rollback to an older version of the app which is running 50.2.1.1. No error, runs as expected.

FliplineStudios commented 1 year ago

@waveofthought-code I've weirdly also had this issue with a few users with a recently-released game on Steam, on Windows, and also happening with a captive runtime bundle (not shared/native).

In our case it's built with the older 33.1.1.935. I can't duplicate it myself, but the users all reported that if they installed our game from Steam on their D: drive, they would get this error when trying to run the main EXE. When they installed on their C: drive though it didn't have any problems. (On my own machines, running from any drive works just fine...)

No idea if it's related, just thought I'd mention it since you also mentioned seeing this with a captive runtime bundle, unlike the earlier posts where it was happening with only the shared runtime...

Side-note, @ajwfrost for captive runtime builds it would be nice for the error message to be worded differently, since all of these users have been emailing us asking why they need to download the shared runtime and asking us where to install it, when it already has the captive runtime...

waveofthought-code commented 1 year ago

@FliplineStudios It just got weird over here: Running it on Steam works. Running it from TestFlight does not (above error). Same SDK (50.2.2.3) -- but only on Ventura/M1. My Monterey/x86 machine works 100%.

The TestFlight version does have apple sign in, however, so now i'm suspicious of the process itself rather than the SDK. I really don't know anymore.

FliplineStudios commented 1 year ago

Still seems weird that Apple Sign In would make a captive runtime bundle suddenly unable to find the captive runtime it's packaged with!

@ajwfrost Are there any other scenarios where that error message would pop up even though the captive runtime is already in the bundle?

ajwfrost commented 1 year ago

The error message pops up when the bootstrap executable file isn't able to load in the AIR runtime library/framework. So if you're using a captive runtime on mac, the executable should just try to load in the framework under the expected folder: if it fails, this error message is shown. The wording makes it sound like it's a shared runtime, I agree -> I will have to see whether it's possible for us to distinguish between these situations though. It's altogether possible that an installation of a shared runtime, if present, would be picked up in this case though, so the suggested message may well be a solution!

My assumption here though is that the installation is 'damaged' meaning the files are likely there, but unable to be loaded, and on macOS that means most likely a code signing failure. If the files aren't signed properly, or if files have been added/removed since signing, or if the permissions don't check out properly, then it's likely to have the problem.

If you have an installation where it's failing, it's worth checking the code signing information of the binaries. I believe that Steam re-sign your files so that may be why you're seeing different behaviour (are you signing the binaries yourself before deploying via TestFlight?). There are definitely different standards applied to the code-signing of applications depending on whether they're ARM-based or Intel-based, at least on an ARM-based device (e.g. a universal app running on an M1 would fail if the code-signing/entitlements isn't exactly right when you load it normally in ARM mode; but if you configure it to launch in Intel mode with the Rosetta2 thing, it then just works....)

On Windows I'm more surprised to see that error code, unless the binary has been blocked by an anti-virus program... or depending on how exactly Steam is deploying the binary, I would assume it's the same folder structure in all cases and the executable is just checking via a relative path to try to find the DLL. We should perhaps look to add more logging in here, and maybe the error message can be changed depending on whether we can find (but not load) the binaries...

thanks

waveofthought-code commented 1 year ago

@ajwfrost ty - it was what I suspected (and what you mentioned) -- not a problem with the SDK, but with the signing of it (aka, the "process" I mentioned above).

Turns out my script was adding entitlements to the air framework when codesigning and it wasn't doing that previously. Removing that issue and going back to 50.2.2.3 has stopped this error from occuring.

Side note: I was actually adding entitlements to every framework and have since stopped doing that as well. I still codesign each one, however. Now, only the app itself gets entitlements when its signed. It all works.