Does Firebreath support plugin updates in Internet Explorer once an instance is created without restarting? - activex

Code snippet:
navigator.plugins.refresh(false);
var a = new ActiveXObject(collab.axName);
if (a) {
version = parseVersion(a.version);
}
I run something very similar to the above to check the version of my installed FB plugin. If it is out-of-date, I replace it with a newer version (Firebreath bog-standard Windows installer). However, if I run the snippet again, the newer version is not detected - the new ActiveX object has the old version number.
The ActiveX object creation seems to be the key - installing an update before creating an object will work correctly, and the update is detected if the browser is restarted. And updates work fine in NPAPI browser (which do version detection using navigator.plugins).
Internet Explorer 10, Windows 7.
My question:
Is this expected behavior (or indicative of a bug in my code)? If it is expected, is there is known workaround or alternate approach to accomplish the same goal of installing an update without restarting the browser (e.g., version detection without instantiation, forcing ActiveX update detection)?

Related

Do WebView2 auto updates occur even if there is a process using WebView2?

Our application use WebView2 and it must be keep running for a week or more. We are concerned that if an uninstall occurs due to a WebView2 update while our application is running, it will be terminated by the Restart Manager.
The PC using this application may not have joined the domain and cannot control or block updates by the GP or registry.
(We believe that if an update is performed and WebView2 uninstallation occurs, the application will be terminated by Restart Manager.
GitHub - SessionEnding event is raised when WebView2 is uninstalled
)
Is there a possibility that the WebView2 auto update will occur while
there are processes using WebView2?
WebView2 updates the same way as the Edge browser, you can refer to this thread. Edge can search for updates when process is running but can only finish updates after restarting. I think WebView2 should be the same, maybe it can't finish updates when the process is running.
To get more help, I suggest that you can also raise an issue on WebView2 GitHub.
The WebView2 runtime has an updater that will run in the background and install updates when they are available. New versions are installed side by side with older versions. Older versions are only removed when no longer in use.
The WebView2 runtime updater works in the same way as the Edge browser updater. When a new version is available the updater will install the new version side by side with any existing versions that are currently in use. The old version will be deleted once its no longer in use. That is, apps with already created WebView2s will continue to use the older version. The CoreWebView2Environment.NewBrowserVersionAvailable event will be raised to tell apps using the old version to move to the new version. Once the apps using the old WebView2 version stop using the old WebView2 version, the older version will be deleted.
New WebView2 instances will be created using the newest available version even if there are other apps using the older version at the same time. One exception to this is if you create a new WebView2 instance that shares a user data folder with an already running WebView2 running with an older WebView2 runtime version. In that case the new WebView2 instance will connect to the already running older versioned WebView2 runtime environment.

How do I test a mobile app update using Appium?

Is it possible to automate the updating of an app using Appium?
My scenario is that I need to install an older version of the app and in my test I have to install the newest version.
But the desired capabilities for appium:app is defined as the latest app. I was thinking that I can override this desired capability to be an older version first? But, for now, I am still not sure how to execute this.
How should I go about testing this?
Using "app" capability install the old version.
Then, use driver.installApp() to install the newer version. This will upgrade the app by default.
Note that you might have to cast the driver to use the installApp() command.
For e.g. if you are initialising the driver like below,
AppiumDriver driver = new AndroidDriver():
Then, you may have to cast the driver like below:
((AndroidDriver) driver).installApp();
Similarly for iOS,
((IOSDriver) driver).installApp();
The Appium's project lead has created a very good article on this topic for Android. You can read about it here: https://appiumpro.com/editions/9-testing-android-app-upgrades

How to write text on a mobile element without clearing it

I am working with appium to automate my native app. I need to write a test case to verify the search suggestions after typing each character.
While trying to do so, each and every time I use element.sendKeys(string) it erases the previous value in the text box. I need to type a string in a text box without clearing it. Any idea how it can be done?
Java - 1.8;
Appium java client - 5.0.2;
Appium server - 1.7
Try to tap using TouchAction on the element before calling sendKeys.
This will not erase the text. This approach is working for me.
Also, I would suggest you to use latest Appium Java client (6.1.0) and server (1.9.1).
Edit:
You can use Java client 5.0.4 if you can't use latest version.
Sample code to tap using 5.0.4 is:
TouchAction touch = new TouchAction (driver);
touch.tap (e).perform ();
Also, if you want to have latest Appium Java client flavor without worrying about the major changes done in the new version, then you can try my open source framework coteafs-appium as I keep a stable methods exposed to the user and major Java client version changes are handled in the framework itself so it keep you worry free.

Was compatibility for NDIS 5.x drivers removed in Windows 10?

I have an NDIS 5.x Passthru driver that was adapted from this sample. Obviously NDIS 6 has been available for quite some time, rendering 5.x obsolete, but backward compatibility has allowed the driver to continue to run in up to and including Windows 8.1 so the code has not been updated.
Now the same driver does not function on Windows 10. (Edited to add: The driver loads, but "netcfg /b" shows that it did not bind to any adapters.) The sys file is the same, installed the same way and with the same signature that works in Win8.1. I can't find any official source that NDIS 5.x compatibility has been removed from Windows 10, but I do find several people with the same problem who are speculating that is the case.
Do we know officially if NDIS 5.x compatibility been removed from Windows 10, and/or is there some kind of compatibility mode that can be activated to allow me to keep using my existing driver until I come up with Plan B?
No, NDIS backward compatibility was not removed in Windows 10. A new network class Installer called NetSetup was added with a shim for the old NetCfg calls. Apparently, there's a bug in the shim that causes drivers like mine to install but not bind to any adapters. They're assigning someone to work on it, and I will update this answer when there's a resolution.
Edited to add: Microsoft has decided not to resolve this issue because few are affected by it.

how ActiveX can be updated automatically at client machine

I have created an ActiveX control which is installed in the client machine. Now I have made some changes in the ActiveX control and now want that Changed ActiveX should be updated in the client machine automatically.
I have changed the version of the setup file from 1.0.0 to 1.0.1 and "removePreviousVersion" to "True" but still it is not asking for update.
Should i change the AssemblyVersion and AssemblyFileVersion of the assmeblyinfo.cs file.
Am I missing something to change the product code or update code or version?
"asking for update" must be your implementation. ActiveX/COM-s do not update automatically. You can run Setup to preinstall the new version.
However you can implement some service/background process which checks for new version via internet. There must be web/file server connected to internet which shares some small file (e.g. text or XML saying which is the latest available version).

Resources