How to update Firefox WebExtensions deployed with Firefox in an enterprise environment? - firefox-addon-webextensions

I am distributing Firefox ESR in an enterprise environment, including a homemade WebExtension in the distribution\extension directory as explained in https://support.mozilla.org/en-US/kb/deploying-firefox-with-extensions
This instance of Firefox is installed to be used for a particular set of applications and is not intended to be used as the user's main browser. It is launched through a cmd script with a specific profile, for instance :
Firefox\browser\firefox.exe -profile myParticularProfile
Starting Firefox this way creates the profile if not already present, and the profile will not be visible in the profile manager.
Everything is fine after initial installation : every new profile of every user will get the extension copied to the extensions directory of its profile, and the extension is activated.
However, I need to be able to update the extension without reinstalling Firefox. The problem is, the updated extension does not get copied to existing profiles.
The documentation says that the extensions will be updated when Firefox is updated, but I need to be able to update the extension without updating/reinstalling Firefox.
Clearing the "extensions" folder in the profile does not solve the problem (the extension does not come back with the update version as I hoped)
I also tried clearing various cache directories without success
I hope I will not need to write a command script to update the extensions myself since I am not certain I will be able to easily locate and modify every user's profiles.
Maybe suggesting to firefox that it has been updated (even if it is not true) would do the trick, but I do not know if this is possible.
Any ideas ?

Related

Why does the MSIX not automatically check for updates every time the application runs when sideloading is enabled?

Question:
Why does the MSIX not automatically check for updates every time the application runs when sideloading is enabled?
Context:
We are migrating a WPF application to Azure and have created an MSIX installer with sideloading enabled and set to check for updates every time the application launches. Accordingly, the *.appinstaller file is as follows:
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
Uri="https://<AppService>.azurewebsites.net/<AppName>.Setup.appinstaller"
Version="1.0.1.0" xmlns="http://schemas.microsoft.com/appx/appinstaller/2017/2">
<MainBundle
Name="<SomeGuid>"
Version="1.0.1.0"
Publisher="CN=<CertificateName>"
Uri="https://<AppService>.azurewebsites.net/<AppName>.Setup_1.0.1.0_Development_Test/<AppName>.Setup_1.0.1.0_x64_Development.msixbundle" />
<UpdateSettings>
<OnLaunch
HoursBetweenUpdateChecks="0" />
</UpdateSettings>
</AppInstaller>
Unfortunately, every time we publish an update to the package to Azure, the application does not automatically check for any updates, and so it does not prompt us to update. However, when we go to the application's published weblink and click to install, the installer will see that the application is already installed and that an update is available.
Troubleshooting:
We tried adding to the app manifest's Content URI (tab) to the *.appinstaller site, but that did not work. I noticed that the *.appinstaller is appending the text _Test to the path name. I am not sure why that is being added. I have tried recreating the installer package in order to rule out any potential configuration errors. Could that be the source of the problem?
I have also enabled Use developer feature and followed all other instructions provided by Microsoft here: https://learn.microsoft.com/en-us/windows/application-management/sideload-apps-in-windows-10
Note: we tried creating a ClickOnce publish profile and that works. It does not make sense why sideloading works for ClickOnce but not MSIX.
From what I see here you need to update the schema to 2018:
xmlns="http://schemas.microsoft.com/appx/appinstaller/2018"
Also, what version of Windows 10 are you running? I see the appinstaller update settings have been introduced gradually, older versions of Win 10 do no support all of them.
Another older issue from 2019 seems to highlight a limitation for apps launched via a desktop or taskbar shortcut.

Microsoft Teams Action messaging extension with task module and URL not working

I am trying to build an action messaging extension with a task module implementation which uses a URL attribute to load the page. Attached is the screenshot of the task module code which was generated by Yeoman Teams generator.
The popup comes up blank. So it means it's not loading the HTML file path, but if I open Chrome and try to load the URL, it works fine.
Also instead of using URL if I use an adaptive card it works fine. Only the URL part doesn't load on the popup. Attached is another screenshot of the popup inside teams:
What could be wrong with the code?
The other answer is correct in that your url needs to be reflected 100% correctly in your manifest. However, there are a few things that you need to be clear on:
It's not per se the address of the BOT that's important, but rather the address of the web page itself that needs to be listed in your safe domains list in your manifest. In your case, they're hosted in the same endpoint, but they might not be in your final solution, depending on how you end up hosting this.
While you're developing locally, rather use App Studio. That way, you don't need to fiddle with the zip file every time - you can just change it in App Studio and immediately redeploy with the updated URL
Every time when you compile and run the project, a new hostname is generated since ngrok free license is used in the yo teams scaffolding, which makes the app to reference to the old URL.
You need to uninstall the app from the Teams app store under your organization and upload the new app from the package folder .zip (Only after gulp ngrok-serve)
If it still does not work, check the below
Unzip the package file and verify the manifest whether it's pointing to the right hostname of the action html page
Go to http://localhost:4040 to inspect the ngrok tunnel traffic that should give more info on the routed requests.

Codename One Preferences/Storage permissions

I have developed and published an app in Google Play Store, which only send simple String request to REST API and store the results in the Preferences. The same app is also submitted to Windows Store for publication, however it was rejected due to the following reason:
The app declares use of the sensitive capability [musicLibrary, picturesLibrary, videosLibrary] without appearing to access the declared capability. Please removed the sensitive capability declaration and re-submit the app.
Upon inspection to Google Play Store submission, I noticed the same permissions are requested:
This app has access to:Photos/Media/Filesread the contents of your USB storagemodify or delete the contents of your USB storageStorageread the contents of your USB storagemodify or delete the contents of your USB storageOtherreceive data from Internetview network connectionsfull network accessprevent device from sleeping
So my question is, do Preferences really need these permissions, or can I set some kind of build hints to remove these permission requests, especially for UWP build? I have also tried to set android.blockExternalStoragePermission build hint, but the permissions are still requested in Android build. I have yet to try iOS build since currently I don't have Apple Developer account.
Thank you very much in advance.
Edit #1 (23/10/2018):
Upon further inspection, I found that I have mistakenly uploaded the version that didn't declare android.blockExternalStoragePermission to Google Play Store, so all good on Android version.
Currently I'm not using any of cn1libs, and here's the list of all classes imported in my application:
java.util.HashMapjava.util.Mapjava.util.Randomcom.codename1.components.InfiniteProgresscom.codename1.components.ToastBarcom.codename1.components.ToastBar.Statuscom.codename1.io.CharArrayReadercom.codename1.io.JSONParsercom.codename1.io.Logcom.codename1.io.NetworkManagercom.codename1.io.Preferencescom.codename1.io.rest.Responsecom.codename1.io.rest.Restcom.codename1.l10n.L10NManagercom.codename1.ui.Buttoncom.codename1.ui.Componentcom.codename1.ui.Containercom.codename1.ui.Dialogcom.codename1.ui.FontImagecom.codename1.ui.Formcom.codename1.ui.Labelcom.codename1.ui.events.ActionEventcom.codename1.ui.events.ActionListenercom.codename1.ui.layouts.BorderLayoutcom.codename1.ui.layouts.FlowLayoutcom.codename1.ui.layouts.GridLayoutcom.codename1.ui.plaf.Bordercom.codename1.ui.plaf.Stylecom.codename1.ui.plaf.UIManagercom.codename1.ui.util.Resources
So my original question remain, how do I set the build hints to prevent the same external storage read/write permission in Windows and iOS?
See the section titled "Android Permissions" here, for a list of some API's that might trigger extra permissions. I suggest extracting the manifest from the XML and inspecting it. It should include two permissions based on your description you should have two permissions there:
android.permission.WRITE_EXTERNAL_STORAGE - which you should have been disabled when you applied android.blockExternalStoragePermission
android.permission.INTERNET - this one you actually need
I'm assuming you have a permission for media access and here it becomes a question of where it came from?
Did you use a cn1lib that might include a feature that triggers this?
Do you have a feature in the app that isn't active yet?
Once you have the specific name or results of this investigation comment here and I'll revise the answer with more details.

Cannot log in to Drupal site

I have a VM that I set up to do development on two sites hosted on Acquia with the same codebase. I'm using version Drupal 7.26. I have it where I can access both sites from the host computer, but when I try to log in using /user/login on either site, I get nothing. The POST returns a 404 containing the log in page again.
I've tried settings $cookie_domain = '.my-site.dev' as well as $cookie = 'www.mysite.dev'. Neither has any effect. I also tried adding a bunch of random charactersto the file to make sure I was editing the correct file; with the random characters, pages didn't load at all. (See https://www.drupal.org/node/611920#comment-3110010.)
I also tried doing repair table sessions. I forgot which site I saw that recommendation from. I also tried delete from sessions just for kicks. Neither worked.
Any ideas? Thanks!
edit: Per https://www.drupal.org/node/261411#comment-3182566, I tried to go to www.mysite.dev/?q=user/login. This did not give me a 404, but I had tried (unsuccessfully, it seems) to reset my password through the database. I'm at least getting an error about a bad username/password combination rather than nothing at all. Still, I would think /user/login should have worked, too.
edit 2: The production site uses CAS, but logging in through /user/login still works.

File default.css appears in browser after being deleted from server

I am making some changes to the css file for a website and I found out that my changes are disregarded.
In order to diagnose the problem, I deleted the only css file I have (default.css) from the server.
To my surprise, all web browers (Chrome, Firefox, IE11) are still capable of seeing and downloading the file. So, if I go to www.example.com/default.css, I can download the file despite the fact it is not there anymore! I used the command Ctrl + F5 to clear the local cash from browsers and reload the file default.css, but the file is still there and it contains the old version. I also used Ctrl + Shift + Del to clear everything in IE browser. Earlier today I created the file .htaccess to redirect example.com to www.example.com. I also use the services of cloudflare.
If I upload to the same location a different file, default2.css, I can view it correctly.
Any idea who delivers to me the old file? I suspect it may be cloudflare. I host my website on runhosting.com
Thanks,
Nick
Did you purge the file in CloudFlare?
CSS is a file CloudFlare caches & you would want to purge it if you make a change to static content we cache.

Resources