Android -- Auto Install third party apk file from a web server - auto-update

How to install the new version of apk file from a web server automatically instead of manual install(Downloading the apk and clicking the same).Upon starting the application , it should query for the higher versions available in web server and based on that the new version should be installed in the device.The updation may be either with user confirmation or background process.

You cannot auto-install any apk without the user's permission. You can at best, download the apk file, and then prompt the user to let him know that you want this application to be installed.
So, if the web app has the necessary APIs, you could write some code to query and get the latest versions available, and then finally download and prompt the user.
There is an intent to launch this confirmation activity.
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(Uri.fromFile(new File("link to downloaded file")),"application/vnd.android.package-archive");
startActivity(intent);

Related

How to install the DAML SDK in a Ubuntu VM, which doesn't have the internet connection?

Unable to install the "da-cli-114-7582c1a0bd-linux.run" file in my Ubuntu VM. The setup is failing while checking the latest version check.
I have downloaded the latest DAML SDK setup file "da-cli-114-7582c1a0bd-linux.run" and copied the same into my Ubuntu VM through local network connection. When I try to install the .run file, the setup trying to connect to the internet for latest version check. But I am not allowed to use internet in the application servers/VMs. Because of this restriction the setup is getting failed and I am unable to complete the DAML SDK installation.
Is it possible to get the DAML SDK setup as a .tar file? If we have tar file, then it will be easy to complete the setup manually.
Installing the SDK using the .run files in an environment without an internet connection is not easy. It might be possible to install it in an environment with internet and then tar up the folder ~/.da, extract it back into place in the VM and put ~/.da/bin.
However, there is a new SDK assistant in the works (called daml, not da), which can be installed using curl -sSL get.daml.com | sh. If you look at the content of the installation script, you can see that all it really does is downloading a tar-ball from GitHub releases, un-tars it and calls an install.sh script within. That's probably the easier way to get the SDK into an offline environment at this point.
However, the documentation for the new daml assistant is not on docs.daml.com yet. It will be shortly, but in the meantime you can read it on GitHub.

ERROR ITMS - 90167 No. app bundles found in the package

Before I start writing about the error, I'm running on macOS Sierra and using Xcode 7.3.1.
So I'm creating an Archive from my App, I validate the App and it passes validation, but when uploading to App Store, I get the error "ERROR ITMS - 90167 No. app bundles found in the package".
I've checked all my documentation and I have everything.
I have all my provisioning profiles.
I have Release as "iOS Distribution".
This error just started appearing after I installed macOS Sierra.
Anyone has an idea of why I'm getting this error?
After chatting with folks at WWDC in both the Xcode lab and the App Store lab, they were able to dig up information that this is a known issue in the current Sierra seed that is fixed in the next release. You can either revert, or wait. Not the most satisfying answer, I admit.
Problem:
Issue with the current macOS Sierra build.
Workaround
Build with Xcode 7.3.1 then upload using Xcode 8 [Beta]. (Thanks to #JollyRoger)
Currently, this workaround ONLY works for TestFlight and NOT for App Store submissions.
No need for fix [UPDATE]
So it seems that this bug has lasted for the whole beta period and it might not be worth for Apple to fix it anymore as the final version of iOS 10.0 is releasing in a few days and the final macOS Sierra is releasing a few days after that.
If you are still getting this issue with the final build of macOS Sierra, make sure you are using Xcode 8.x and not anything earlier than that.
Possible errors:
ERROR ITMS-90635
ERROR ITMS-90635: "Invalid Mach-O Format. The Mach-O in bundle
"....framework" isn’t consistent with the Mach-O in the main bundle.
The main bundle Mach-O contains armv7(machine code) and arm64(machine
code), while the nested bundle Mach-O contains armv7(bitcode) and
arm64(bitcode). Verify that all of the targets for a platform have a
consistent value for the ENABLE_BITCODE build setting."
Fix: Uncheck the Include Bitcode option before uploading.
INFO ITMS-90111
INFO ITMS-90111: "Beta Toolchain. This app has been built using beta toolchains. Apps built with beta toolchains are acceptable for TestFlight submission. Note that you will not be able to submit these builds for sale on the App Store."
Note: This will allow you to upload the build and use it for TestFlight but when trying to submit to the store you will be faced with this error message:
New apps and app updates must be built with the public (GM) versions of Xcode 6 or later, OS X, and tvOS SDK. Don't submit apps built with beta software including beta OS X builds.
If you are uploading from Xcode7(less than Xcode8) and macOS Sierra(V10.12), So this issue "ERROR ITMS-90167: "No .app bundles found in the package"" will come and will not allow to upload build to AppStore.
So use "Application Loader V3.6" or "Xcode8" to upload the build.
Try This, it worked like a charm for me,
We also facing same issues at time of updated macOS Sierra.
At time of upload build by using Xcode7.3.1 we get an error message
"ERROR ITMS-90167:"No.app bundles found in the package"
To Solve Error And Upload IPA file On App Store Follow Below Steps
We export build by using Xcode7.3.1.
-For upload build we use Application Loader V3.6 of Xcode8.
Xcode -> Open Developer Tools -> Application Loader
Follow Below Steps
1) Open Application Loader
2) Choose Build(IPA)
3)Uploading IPA file To app store
4)Successfully Submit Build(IPA)To App store
Your App will uploaded on Appstore,
Hope this is help for some one.
I would first like to thank #xemacobra for his solution, it worked for me until I needed to submit an application for Review.
If you need to submit an application for the App Store, and the build says You may not submit builds using beta software... here is the solution:
The problem is Xcode is sending the build information along with the version of you Mac OS. To fix that, you just need to change your Mac OS build to an older, acceptable, version.
Restart your Mac and hold Command + R on boot up
Open Terminal
Run csrutil disable
Restart your Mac.
In Finder, go to /System/Library/CoreServices/SystemVersion.plist
Open the file so that you may edit the SystemVersion.plist
Find <key>ProductBuildVersion</key> and locate the string attached to this key. For example, mine was 16A254g.
Change this string to a version of Mac OS that is currently supported for public release. At the time of this solution this one will fine: 15G31
Restart Xcode. Re-Archive your application. Re-Submit the application.
I did not try submitting the application through Xcode 7.3.1, but I do know this still works if you submit the .ipa through Xcode 8 beta 3.
Once you have submitted your build, revert the SystemVersion.plist to the original string, and repeat steps 1-4 replacing csrutil disable with csrutil enable.
I have also experienced the same. This is the simple way to solve your problem. Archive your app using Xcode 7.3.1 and export the ipa file of your app into a directory by selecting the option Save for iOS App Store deployment.
After that open Xcode 8.0 and open Application Loader from Xcode -> Developer Tools. Sign in to your team, and upload the ipa file using Xcode 8.0.
I have uploaded two apps to iTunesConnect, it will work for sure.
I was having this issue with Xcode 8 GM and trying to submit an app for release though Application Loader.
You have to use the version of Application Loader that comes with Xcode 8, which should be 3.6
I still have Xcode 7 installed, and was using Application Loader 3.5
Update
My apps submit okay now and go into processing, then soon after disappear completely. I think this might be a separate issue though.
Update 2
You still can't use Sierra to submit your apps. At least not until they release the GM.
Update 3
This issue is still occurring with this particular project. All other new ones (sticker apps) that I have created since public launch have been submitted to iTunes Connect with no issues.
I worked on this project during the betas, so it's possible something has been corrupted along the way and is causing issues. Might require starting a new project in Xcode 8.
There's a thread on the developer forums addressing this issue. https://forums.developer.apple.com/thread/62703
Solution
Turns out the fix for us was to add the "NSCameraUsageDescription" key
to the info.plist with a description of what the camera does in the
app.
Not sure if that solution will help in all cases though.
I submit an app built using LibGDX and had the same issue after upgrading to Sierra. I solved it by:
Upgrading Xcode (8.x), as explained above
Use the latest version of appLoader (3.6). To do that, use the AppLoader available within Xcode. I was using a standalone version of the appLoader: that's incorrect. Open Xcode and go to Xcode->Open Developer Tool->Application Loader
Unable to process application at this time due to the following error: No .app bundles found in the package. This issues appear when your pc's space is less. So clear you trash or some useless document from you pc. Then let's try again! It's work for me!
I recently upgraded to macOS Sierra and also received this error message. After uploading through the application loader failed.I downloaded Xcode 8 (kept my 7.3.1 copy). Closed Xcode 7.3.1. Opened Xcode 8-> Organizer-> proceeded to validate and upload my build. It worked. Hope this helps someone in a similar situation.
Maybe it's about your disk space check your disk space.
Try open App Loader from Xcode8.
Xcode > Open Developer Tools > Application Loader
Then you can upload app to TestFlight without the error.
These are all fabulous answers above... follow Nicholas's 9 step process above and also Tobeiosdev if you don't have write access to the SystemVersion.plist file.
However be very careful about how you read the step by step guide. DO NOT do as I did and restart your device after editing that plist file, as you will render most applications on your mac useless, including Terminal & TextEdit (which are required to edit it back). Reopen terminal inside Sierra (or the beta OS you are running) not inside the command line.
I unfortunately found out the hard way and then could not edit the plist file again in the command line. So I then had to reboot several times before finding the solution which was to go into single user mode (Command-S on restart), all of which scared me senseless that I had ruined the build of my mac. Eventually got everything running again but was somewhat delayed too by having to reinstall Xcode 8... leading to a sleepless night as my first ever submission to the AppStore.
All in all, the above is a perfect solution that works all around, IF you follow the directions correctly. Lesson learnt!
I accidentally opened an old version of the Application Loader Version 3.5 (921) and got the error ITMS-90167 no app bundles found. Be sure you open the Application Loader over the menu of Xcode (Xcode->Open Developer Tool). Version 3.6 (1020) works like a charm! :)
I solved this problem as follows, find your archive in the Organizer, and then:
Show in finder
Show package contents
In the „Wasabi.xcarchive“ file, find the
„Products“-„Applications“-„Wasabi.app“(Wasabi is your app’s name),
„Show package contents“ again
Finally, you can see there has a file named“Info.plist“, open it
Edit the value with a key named „BuildMachineOSBuild“, I just change
it to „15F34″(it’s „El Capitan 10.11.5“ ’s version)
According to #Fan Zhang answer follow these steps and you can upload this archive use Xcode or Application Loader, whatever you want!
When you archived your app, find your archive in the Organizer, and then:
-->"Show in finder";
-->"Show package contents";
-->In the "xx.xcarchive" file, find the "Products"->"Applications"->"xx.app"(xx is your app's name), "Show package contents" again;
-->Finally, you can see there has a file named"Info.plist", open it;
Edit the value with a key named "BuildMachineOSBuild", I just change it to "15F34"(it's "EI Capitan 10.11.5" 's version);
With me, my application writing by Swift 2.2. And must use Xcode 7.3.1 to archive and upload to Apple testflight but got the same error(I run on macOS Sierra-10.12). The follow solution fix it for me, hope another who face the same problem can find somethings helpful:
1> Use Xcode 7.3.1 to archive
2> Export to file .ipa
3> Quit Xcode 7.3.1 then open Xcode 8, and then open Application Loader, use Application Loader to upload file .ipa to itunes connect.
In case this helps, I had the same error code "ERROR ITMS - 90167 No. app bundles found in the package" using mac OS 10.14.4 with Xcode 10.2.
(As a note, I was able to successfully submit builds some weeks ago with the same configuration, but this seems to be something in the iTunes Connect side)
Had to update to mac os 10.14.6 and Xcode 10.3 to successfully submit my build.
I faced the same problem .
what worked for me was ->
go to target-> signing & capabilities -> signing certificate -> I had to revoke one certificate. Always revoke the Certificate by the name of admin's iMac .
It is created by default while making your certification and profiles.
**Picture is attached for the reference.
PS:- always make sure the bundle id is same on App store connect and Xcode before archiving.
The privacy settings are changed for iOS 10, more on this could be read here
I had previous described issues, which had to be solved as described, but after successful upload application wasn't visible on iTunes connect.
I had to add Privacy - Bluetooth Peripheral Usage Description key in a plist in order to solve the last one.
Other missing keys will make the same problem.
I was getting this error with Xcode 7.2.1 and Application Loader 3.4 on macOS 10.12.1.
But for some reason, it worked if I used the command-line "altool" to do the upload instead:
'/Applications/Xcode-7.2.1.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool' \
--upload-app -f your-app.ipa \
-u your-apple-id -p your-apple-id-password \
--output-format xml
I had to provide missing application name in order to fix this problem.
Go inside your Appstore and download the new version of Transporter.
this worked for me

Windows Phone 8 Error - Installation of the application failed

I am working on a Windows Phone 8 project where we are deploying it as a company app through HockeyApp. I have a .PFX file generated from our Symantec cert and the correct .aetx file installed on the device.
If I take the .XAP file I intend to deploy and copy it somewhere separate and test it by deploying it using the XapDeploy.exe tool, it will install silently and work properly. Then I use the XapSignTool to sign the .XAP against the .PFX successfully ("XapSignTool Success: Successfully signed = C:\xxx").
When I attempt to test this recently signed XAP with the XapDeploy tool I will get the error "Error - Installation of the application failed. Run time error has occurred. Fix the Capabilities in the WMAppManifest.xml file." If deploy this file with HockeyApp the install will silently fail on the device and appear to just sit there after download.
Does anybody know what could be causing this after code signing?
I was able to resolve my issue. First, a codesigned XAP will not run in the emulator unless you have already installed the AET file on that current running version of the emulator. So, it was incorrect for me to to expect not to see a failure after the XAP was signed.
I then encountered some other issues when deploying to my device. This was resolved by making sure that the Publisher ID GUID was the same as the Publisher ID used for the Symantec cert.
Also, as opposed to using the XapSigningTool directly I ended up using the PowerShell script that runs both the MDILXAPCompile and signs the XAP in a single step (making the post-build step easy to write). The ps script BuildMDILXap.ps1 is found under \Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\Tools\MDILXAPCompile\ and ships with the SDK apparently.

IBM Worklight - How to silently update the application's web resources?

I want to silently update the web resources of my application using the Direct Update feature.
I did not manage to find any related documentation to do that.Can anyone give me an idea on how to proceed?
I generated an apk for my application say app version 1.0.
With some modifications in UI I generated one more apk say version 1.1.
Now again with some change i generated apk for third version say v 1.2.(latest)
Now My intention is if a user has apk 1.0 then it should update the user that this version is deprecated and i will provide a link to get the latest version.
If the user has apk version 1.1 then it has to alert the user that an update is available.
All these things I am able to achieve using direct update. But when I am trying the same for silent update it is not working.
The property you're looking for is updateSliently set to true in initOptions.js.
For this to work, it is required that connectOnStartup will be set to true as well.
It seems to be working in Worklight 6.0, but fail in Worklight 5.0.6; I have opened a defect for this.
In any case,
The steps you have described are INCORRECT. These are the steps for Direct Update, silent or not:
Create an app, add environment
Build all and deploy
Launch app on device
Change WEB RESOURCES in the app (images, HTML, JavaScript)
Re-build and deploy the app
Re-open the app / bring it back to the foreground
If you are changing the version id, the changes you will make to the web resources will not reach their destination.
Changes done to version="1.0", will reach only apps running version "1.0"; if you up the value then changes will only reach apps of that new value.

How to create updater for AIR application bundled with captive runtime?

What would be the logic of updating mechanism for AIR application with captive runtime?
Application should be distributed for Windows and Mac.
I got stuck here:
Note that this does not necessarily mean that you need to implement your own auto-update mechanism. If you use a commercial tool to create your installer, it may include auto-update mechanisms that you can leverage. On the other hand, if you do need to write your own update mechanism, you should find the URLStream, File, and NativeProcess APIs handy in implementation.
after reading it at: http://www.adobe.com/devnet/air/articles/air3-install-and-deployment-options.html
Is it something like (for Windows, after app is installed with some .exe or .msi installer):
upon starting app, check for new version
if there is new version, download it
overwrite existing app files and AIR runtime files
It should be forced update, before starting app.
How to overwrite running app? Or to make another app (updater) for replacing files, and after that start main app with NativeProcess?
For Windows I use the Native Application Updater
http://code.google.com/p/nativeapplicationupdater/
and WinRAR SFX archive (.exe) to auto update my captive runtime apps.
Native Application Updater will check the version, download your new exe, close your app and run that new exe.
In the SFX options:
I use absolute path, something like: %USERPROFILE%\AppData\Local\com\thenewkid\appname\
Under "Modes" you can select "Hide All" in Silent Mode. Under "Setup" you get it to run your application.exe after extraction.
You can keep the update size low by removing the Adobe AIR folder until a new version of the SDK becomes available (i.e. just had to push a larger update out recently for 3.3)
For MAC I use Installer. It isn't as silent as the Windows Updater as the user will have to click through a couple installer prompts but it allows you to put it in their home directory so administrative privileged aren't required which is what I find the most useful aspect of captive runtime.
Basically, you should have your app point to some XML file on your server which will contain things like newest version number, path to new files on server etc.
You can use a separate app to do the restart but keep in mind that since you are using Captive Runtime this will mean another 40-60MB just for the updater (unless you use some non-recommended hacks).
It would probably be better to just prompt the user to restart after you download the update.
The trick is not to overwrite the EXE but instead to overwrite the SWF (and any other files that need updating). From what I can tell, the EXE is simply a pointer to the XML manifest and the SWF.
You should not be updating AIR runtimes file every time - only for critical updates (since they are large files).
For the restarting of AIR in captive runtime this works for me on Mac (have not checked for Windows yet) (Note: UpdateAutoTest was the name of my app):
var appLauncher:File;
appLauncher = new File(File.applicationDirectory.nativePath).parent.parent.resolvePath("Contents").resolvePath("MacOS").resolvePath("AutoUpdateTest");
var npInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo;
npInfo.executable = appLauncher;
var _args:Vector.<String> = new Vector.<String>;
//_args.push("-a");
//_args.push();
npInfo.arguments = _args;
var np:NativeProcess = new NativeProcess;
np.addEventListener(NativeProcessExitEvent.EXIT, npExitHandler);
np.start(npInfo);
exit();
There is no need to overwrite. Have the user download your new package and launch it. AIR will know that package is already installed as a previous version and will prompt the user if he wants to update.
So the workflow is : check if there is a newer package, alert the user there is one, have him download and launch it. Air will manage the updating.