How to store environment settings in a Windows Phone application - windows-phone-8

I'm trying to find the best solution in Windows Phone development for configuring environment-specific information.
These may include for example URLs that are different for development, test and production.
They also should be configurable for each developer, alowing them to run the code with his or her own environment setup.
Another example would be the Live SDK ClientID. I'm currently playing around with this SDK, but obviously you don't want to check in your key on GitHub. So hard coding it like every example does is not an option :)
As far as I can see, there is no notion of App.config and appSettings with Windows Phone, and all search results point me to use LocalStorage, which is NOT what I'm after.
Anyone have some experience to this? It must be a standard need for large enterprise applications.

You can store your settings in IsolatedStorage by IsolatedStorageSettings class.
This may help you :)
http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff769510(v=vs.105).aspx
http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj714090(v=vs.105).aspx

Related

Is it possible to create a portable UWP app (=no installation needed)

The UWP infrastructure seems to have everything what's needed for a portable model.
Clear separation between os and application
Clear separation between different applications
Less dependencies
Support portable class libraries
As far I know portable scenario's are not supported right now. Is it something that we can expect in the future or is it intrinsic impossible due the architecture of UWP/WinRT
How hard would it be to create some kind of host executable that can run any local UWP app. At the moment I'm looking for portability between different Windows 10 PC's. Not so much cross device or cross OS.
I'm aware you can side load UWP apps, but that's not what I'm looking for.
Is it something that we can expect in the future or is it intrinsic impossible due the architecture of UWP/WinRT
I don't see any major technical limitations that would prevent this scenario. UWP apps can register to some global mechanisms (which is something portable apps shouldn't do), like push notifications or background tasks, but the whole application model has been designed so that users can limit access to those features on a per-application basis. So every developer publishing an app is supposed to have considered beforehand that those code-paths may fail.
But "technically possible" doesn't mean that Microsoft will do it. In fact, I seriously doubt they ever will. The reason is simple: they're pushing the store with all their might, even seeking to put Win32 apps on it. Clearly, they're moving towards putting more apps on the store, not the other way around.
As to know whether it'd be possible to make a third-party standalone runner, I think so. When running unit tests for an UWP app, Visual Studio is launching a sort of "shell" hosting the app (it has become very apparent recently because after an update of Windows 10, the API that allowed to hide the splashscreen wasn't working anymore). I don't know what API is used to create this shell, but I'd definitely dig that way if I wanted to make a portable UWP host.
Although I haven't done this myself (will update answer if and when), reading this article makes it look like there is an easy way to create an installer that calls that command.
In short, an appx package can be installed locally using the command:
C:\Program Files (x86)\Windows Kits\10\bin\x86\WinAppDeployCmd.exe
Which can probably be wrapped in a UI or CMD installer.
Here's nice example of it (not mine).

How does the mozilla stub installer works?

I'm currently working on a no-touch deployment and auto-update mechanism for a Windows application. I've tried Microsoft ClickOnce strategy but it did not work for me as the strategy only suits small-sized apps, and my application hauls at ~500MB.
I'm interested in how the stub based installation and update strategies work for Mozilla Firefox and Google Chrome and also Microsoft's packages including its .NET framework and VS installers. I've come across Google Omaha which hosts the Google product update deployment mechanism, but it is not very conclusive for me.
Can anybody please help me out how the stub-based deployment design works?
P.S. Any open source code for the same would be of a great help. ;-)
I'm not quite exactly sure of what you mean by "stub-based". There's a handful of technologies and tools involved in what I understand you want to accomplish. For the setup packages creation there are: NSIS, Inno Setup and the WiX Toolset, for example. A core technology is MSI. On the other hand, for application updates and the such, there's BITS and also some web stuff involved in updates publishing, like using an ATOM feed, for instance (your referenced Google Omaha might fit into this category).
It's only a bunch of pointers, but I hope it helps.
The Mozilla installer is opensource (as is the NSIS system it uses) so I'd suggest adapting the code found here: http://lxr.mozilla.org/seamonkey/source/toolkit/mozapps/installer/windows/nsis/
It's a bit complex so you could start with a simpler script and incorporate the bits you want (like finding/downloading updates and UAC evelation).

Migrating Windows Phone 8 app to Windows Tablet

Do Windows Phone 8 Application developed for Windows Phone 8 device will run on Windows Surface Tablets (RT & 8.1)? Kindly clarify me.
Could you please suggest me on, what are the changes required for migrating the application.
Take a look on the Portable class library.
It allow you to share your code between different platform.
http://msdn.microsoft.com/en-us/library/gg597392(v=vs.110).aspx
This blog clearly explains how to use it :
http://blogs.msdn.com/b/stephe/archive/2012/05/07/partager-du-code-entre-plate-formes-gr-226-ce-224-la-portable-class-library-1-4.aspx
Anyway you got specific dev to do.
You will need to rewrite many portions of the application. It's difficult to be more precise as you did not describe anything about your application.
The UI, assuming you select C# and XAML for the Windows 8 modern application will need a significant amount of changes. While there will be a significant amount of knowledge overlap and technology similarity, the UI will not be portable. The components are similar, but for example, you've probably used the Windows Phone toolkit which is not available for a Windows 8 store application. Another consideration is that on the larger screen sizes, you'll ideally want to use a different layout of your application.
For the business logic, you may be able to use much of it as is. However, anything that deals with the file system or network (and more) will not necessarily be portable. You could use a portable class library for some features, but you may still need platform specific code.
While this all may sound like a tremendous amount of work, I'd actually like to suggest that it's not. The platforms are very similar, the development environment will be identical, and some amount of UI work would have been necessary anyway. Assuming you create two applications, the structure might look like this:
PhoneApplication
Windows8Application
DataModel
PortableClassLibraryStuff
PhoneSpecific
Windows8Specific
A lot of differences beetween WinRT and WP8 API makes porting much more difficult. But if you are still interested in this topic I can suggest you
Waiting for WP8.1 and W8.1 Update 1 API combination or
Writing your own little framework in a portable class library for navigation, setting, notification, ... support. I already did that work and there are a lot of possibilities for code sharing (resources can be completely shared with the binding notation of WP8). For more information please visit the opensource github project: Github MultiPlatform Framework sample. You will still need to rewrite a lot of xaml code but the leaked footage of the WP8.1 API already showed that we will be able to use much more shared UI code :-)

Convert Windows Phone 8 Beta to Public?

I developed some apps for Windows Phone (conversion from other plattforms) and when I finally wanted to upload the apps, I saw this BETA-Feature. You can upload your app and test it in real environment. Sound Great.
Now I have seen all the bugs in this process:
First of all, it seems I cannot convert this app if it is working properly to published app?
I have to crate a new app and I have to re-Enter all the descriptions in all languages and re-upload all screenshots?
Next big problem: I cannot re-use the app name? WTF? My app names are now reserved for these BETA-Apps?
What can I do? I want to convert the apps from BETA to PUBLISHED? Not possible? I have to RE-ENTER ALL INFORMATION IN ALL LANGUAGES? I have to re-upload EVERY Screenshot for EVERY language? I have to use a different name? Is this really the only possibility?
On MSDN you can find the description of the beta testing. So, the answer is yes, you need to reinput all data for the production version. In order to use application name in the production release, you can unpublish and delete your beta app. Then you can use its name.
In my own experience, I didn't add much information for the beta distribution. Also, I added suffix BETA to the app, which is in beta distribution. So beta testers can recognize the build.

static html blog/cms to run on a USB stick?

What are the options for having a simple blog, content management system that will deploy the full site as static html over FTP/SFTP and any blog API?
I am aware of Thingamablog but it hasn't been updated in more than a year so i guess is dead now. What are my alternatives that must export at least static HTML to a FTP server?
It would be nice if the app would have some visual gui to enter the blog post and could run from a USB stick.
I don't know that Thingamablog is dead just because it hasn't been updated in a year. Lack of recent updates doesn't necessarily mean the project is dead, it just may mean that it has achieved it's goals and has nothing more to add. Does Thingamablog do what you need?
How about TiddlyWiki. Not a blog or CMS, but it seems to be the kind of thing you need.
Today I came across this tool: Zeta producer. They have a free and a pay version.
Second the motion for CityDesk. You could probably run your blog on the free version (up to 50 "assets" - files, pages, images, etc.), and publishes static HTML to servers via FTP as its specialty. It's trivial to add updates; re-publish process does a differential between your new version and the one that's on the server, and only makes necessary changes.
Examples abound - just google for "*.cty" files.
Here's a CityDesk site I help run:
http://bv-embs-chapter.com
Hope this helps.
Thingamablog is active again. 1.5 will be released soon, currently 1.5veta5 is the latest. Looks good for what you need.
Paul.
You could use the MoWeS Portable: The Modular Web Server.
http://www.chsoftware.net/en/useware/mowes/mowes.htm
It lets you pick and choose a number of static and dynamic services to run on top of a web server straight off the USB drive or a virtual drive.
I run a Wiki off a virtual drive using Mowes at work and at home, i run a personal blog from my usb stick.
Its verrry easy to configure and powerful enough to be productive.
Edit: Heres a link to help you get started with it:
http://www.mediawiki.org/wiki/Manual:Installing_on_WOS_Portable_(Windows)
In the download section, you can select what packages you want to install. This is where you can select what CMS/Blog softwares you want to include.