Can I generate an appx with a windows phone project? - windows-phone-8

My question is based on this:
I have a xamarin forms project, (which has 3 projects: iOS, Android and Windows phone). Using the build options Release ARM we have successfully generated an .xap file to upload it to the windows phone store.
My question is: Using the same project can we generate a appx file to upload it to the windows store or do we have to create a Windows Store app?
As far as I know this is not possible since I have "Create App packages" disabled:
Thanks in advance.

When you have completed 'Store - Create App Package..' (answer: 'No' when it asks about Store deployment), APPX file appears in Debug/Release (NOT Package output) folder. If menu disabled - try to reload project/solution or restart VS.

Related

Issues while publishing a Windows phone app in the Windows Store

I am trying to upload a windows phone app on store. The previous version which was uploaded is 4.0.0.0 and the new package which I am trying to upload is v4.1.0.0.
As per my understanding v4.1.0.0 is higher than v4.0.0.0. I dont understand why I am getting the below error
Error message from Windows :
You’ve uploaded another package with the same properties as this one. When this submission is published, the other package will replace this one.
This package (4.1.0.0) will be removed after you save this page because you have a higher-versioned package that supports the same customers.
I think you need to remove the package v.4.0.0.0 manually and save only v.4.1.0.0

How to use third party dll in windows phone 8.1 application with windows runtime component?

I have created the windows phone 8.1 application in which I want to use third party dll file. That's why I have created windows runtime component for the windows phone project. I have given reference of the runtime component to the windows phone 8.1 application project.
In windows runtime component, I have set the additional Include directory path. Moreover, I have also set the Linker -> Input ->additional dependencies as lib file listing. I have drag drop all dll files in my c# windows phone application main project folder and set build action as content and copy output directory as copy always.
However, I got the following error.
An exception of type 'System.IO.FileNotFoundException' occurred in App1.WindowsPhone.exe but was not handled in user code
I have checkout the following question. But did not resolve it.
How to use a C++ dll in Windows Phone 8.1 XAML App within C++ Runtime Component
I found the answer. All the dependencies has been set properly. There was an issue in the dll file which architecture does not match with the current platform.
After created the build for proper architecture, it works.

Install xap file on windows phone from inside an application

I try to install a windows phone application from inside an application using this code
Uri FILE_URI = new Uri("ms-appdata:///local/myapp.xap",UriKind.Absolute);
await InstallationManager.AddPackageAsync("my app", FILE_URI);
but it return
global::System.Diagnostics.Debugger.Break();
i try to use
Uri FILE_URI = new Uri("ms-appdata:///local/myapp.xap",UriKind.Absolute);
var file = await StorageFile.GetFileFromApplicationUriAsync(FILE_URI);
await Launcher.LaunchFileAsync(file);
but the windows phone error happened
Can't install company app
there's a problem with this company app.
Contact your company's support person for help.
how can I install xap file from inside application? thanks.
Little information ...
There are several causes of the problem:
1) your xap file is downloaded contains the signature Windows store? I.e. you published your app Store and downloaded the install file for?
2) You trying are enterprise application scenario with self-signed XAP file?
3) As i'm understand it, the method is intended for AddPackageAsync. InstallationManager installing applications from external sources as "http//...". I'm not sure what method the XAP has installed from a local storage.
4) Installing the application that is downloaded from the Windows store are available from the SD card. I think that there are restrictions on the installation of the XAP file from local storage.
5) Known problem when InstallationManager. AddPackageAsync does not work on the emulator, but works on the device. Error code '0x800703F0' for Signed internal App while using InstallationManager

Which Xap file is to be submitted to windows phone store

I have developed an application using Nokia Imaging SDK. It builds two forms of the XAP file, one for ARM platform and another for x86. Can anyone tell me which XAP file should be submitted to windows phone 8 store ??
And should I submit the file from debug folder or from release folder and why ??
Thank you!!
Can anyone tell me which XAP file should be submitted to windows phone
8 store ??
Use Any CPU, this will allow them to test it on emulators (x86) or real devices (ARM).
And should I submit the file from debug folder or from release folder
and why ??
Release, because this mode includes optimizations not present on Debug mode.
You have to submit the one in the Release folder:
In the Upload XAP dialog, be sure that you select the release build of your XAP
From: Upload and describe your XAP(s)
You need to set target platform as ARM while creating XAP in release mode because mobile phone have ARM processors so they will need XAP build on ARM configuration. x86 is for emulators only.
The XAP in the ARM Release ie- <Project Folder>..\Bin\ARM\Release\ should be submitted to the Windows Store.
Windows Phone Devices uses ARM based processors.
To generate the output-
First Select Release from the Solution Configuration DropBox.
Then go to configuration manager and change the AnyCPU field to
ARM.
Then Build the project.

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.