I am pretty new to MacOS and building applications on it and I have a question:
When I build a dmg and run it, is there any usual approach to store some properties? I want to access those properties each time I start my application, so they need to remain in the storage. (I want to store them at the first run of the dmg file and then keep them.)
I also want to store some properties which shall be deleted each time after running the application.
My application is based on nodejs. I have another (for Windows, written in C#) where I use the Properties to store some variables (which I want to remain for each run). (e.g. Properties.Settings.Default.variable)
I'd like to know if there is an often used approach for MacOS applications too?
Thanks for help in advance!
Greetings
Related
I'm building a Windows Store app with C#, and I have certain data and settings that I need to persist between sessions. Right now I'm doing this with local files, but for some of it, I don't want the users to be able to edit the files. I currently thwart that by using "scary" file names and obfuscated data, but I want better security, but also don't want to have to jump to my cloud service just to pull their settings, because I want functionality when internet connectivity doesn't exist.
How do I do this? I feel like this is something that should be pretty commonly used feature in apps.
I never worked on Windows 8/8.1 apps, so maybe there is some integrated feature to do what yout want, but I didn't find anything on that subject.
In fact, what I found seems to indicate the opposite :
If you want the data of your Windows Store app to be secured, you have
to do it by yourself.
Depending on the desired level of security you could try using some form of encryption for your local files.
This would make the settings unreadable by the user, and prevent them to tamper with it.
But as pointed in Windows 8 Apps - Local Storage Security, encryption might not be the best way if you really want to make sure the data cannot be edited outside your app, since it is possible to extract the key from your app and decode the data.
Reading the following (and skimming other areas of the site):
http://msdn.microsoft.com/library/windows/apps/br211361.aspx
It seems as though I have to re-write a program I've been writing in VC# 2010, to be able to put it on Windows Store. Is this true? Can I simply import my project into VC# 2013 and then put it out there? Is there a reason I shouldn't do that even if I could (i.e. it looks different than other Windows 8 apps and users will be off-put by it)?
If I can't import and release my project into Windows Store directly, and this is a little bit of a tangent, but, can I at least import it into Visual Studio 2013, and then begin rewriting/adding the parts I need to to be able to make it compatible with Windows Store? I've never used app stores before, so please be gentle.
In most cases, opening a VS2010 project in VS2013 is not a pain.
You can find 2 kind of apps in the Windows Store :
Modern UI apps (aka Metro)
Desktops Apps
If you want to create a Modern UI app you need to target the .Net 4.5 framework. To do so you need to upgrade to VS2013.
But most of your work will be to rewrite a huge part of your program as the modern UI is not compabible with WPF (and you will need to manage touch devices). Other assemblies also doesn't have all the features of the desktop ones, so you will probably have a little bit of work in that area too.
Here is a link that explain the process of publishing an app in the Windows Store : http://msdn.microsoft.com/en-us/library/windows/apps/jj657972.aspx
If you want to publish a desktop application it seems to me that you only need to provide an URL to download your package. Be careful it is not possible to submit that kind of app with a personal account, you need a company account to do so. You can find more information about that process on MSDN: http://msdn.microsoft.com/en-US/windows/desktop/dd535817
I've spent the past few days researching whether its possible to use the Windows API (Preferably Windows 8) to develop an application that can utilize the features in a multiple physical monitor configuration, from a single physical monitor. As far as I can tell you simply cannot do it, or its just not documented at all. Below I will present my problem and the research I've under-taken in the hopes that someone can provide some knowledge I have not yet encountered.
The Problem
In Windows 7+ multi-monitor configurations are able to utilize some cool desktop features such as being able to use a single large desktop that spans multiple monitors, seamless application dragging between them, ability to toggle whether to have the taskbar span or not, etc.
The Virtual Screen (MSDN link).
I would like to gain access to this API and allow my application to use it to allow the user to effectively have multiple virtual desktops from a single physical monitor. Simple as that.
The Solution
Here I will present a number of proposed solutions I have found, and why they will not work (As far as I can tell).
1. Use the Window Station & Desktop API to create entirely new desktops and flip between them.
"A window station is a securable object that is associated with a process, and contains a clipboard, an atom table, and one or more desktop objects.
A desktop is a securable object contained within a window station. A desktop has a logical display surface and contains user interface objects such as windows, menus, and hooks."
MSDN Link.
This is a really clean and simple way to effectively create multiple desktops in windows that allows the user to switch between on a single monitor. However it has the following large caveat:
"Windows doesn't provide a way to move a window from one desktop object to another, and because a separate Explorer process must run on each desktop to provide a taskbar and start menu, most tray applications are only visible on the first desktop." Sysinternals on TechNET.
2. Attempt to create a fake display driver to force Windows to believe it has more than one monitor.
This appears to have been a valid option for a couple of existing similar applications such as ZoneScreen. However in Windows 7 it became difficult to install the unsigned driver and in Windows 8 it appears to be flat out impossible.
3. Fake it by attempting to track applications and force them to hide between user defined monitor groups.
Both commercial and free applications such as DisplayFusion and Finestra Virtual Desktops appear to use a highly convoluted and complex system of tracking launched applications and attempting to hide and unhide them as the user switches between virtual monitors.
This is the most workable solution as it largely meets all the requirements. But its a hack - Some applications don't really work with it and there are many corner cases where it will fail.
What am I missing here? Is any of my research incorrect thus far? Are there areas of the API that I haven't yet plumbed?
develop an application that can utilize the features in a multiple physical monitor configuration, from a single physical monitor
The Windows API ties each desktop to a explorer process and the taskbar,notifications etc are managed on a per-desktop basis. It is possible to create new virtual desktops using this API by creating a new desktop object. However if you are trying to create something that is the equivalent of workspaces in linux distros, then you are out of luck. The desktop object manages the applications launched under a process tree and moving applications between these desktop objects etc is not possible due to the way windows explorer handles work.
The Solution
Here I will present a number of proposed solutions I have found, and why they will not work (As far as I can tell).
The only way to achieve something close to workspaces is to fake it -
each workspace and its process have to be show in the taskbar/notification area by slots. But this is very tough to achieve and games, fullscreen apps etc are bound to break. I am not aware of how this will work out in Win8 either. So yes - workspaces in Windows are going to suck from the get-go.
I know that my question is very general and I don't expect very detailed answer either, just a lead would be great.
Here is what I want to achieve.
I have build two desktop applications using Adobe Air from Flash AS3 files. Both applications are parts of the same project. They're displaying over two screens, each app on one screen, and whatever you do in one it reflects the other, because they are communication each other through local connection class (AS3).
In fact those two applications are One Multi-screen Application. However to install them on the desktop computer you have to first install one Air app and after that the second Air app. The procedure with launching the apps is the same. You have to click on one icon for the first app to open , and than you click on the other icon for the second app to open, and only then you have whole application up and working.
So I'm looking for some solution which would allowed me to "pack" two installation Air files into one package. The user would have to click only on one "instal.exe" icon to fire up installation of those two air apps.
Maybe it needs to be use some external small C++ scrip, or application launcher - I have no Idea
Pease help me with this case, as I couldn't find it anywhere. I would be very grateful even far the smallest lead.
Thanks in advance
Not real sure but could this help ?
http://www.adobe.com/devnet/air/articles/air3-install-and-deployment-options.html
Depending how large / complicated your applications are maybe you could redactor it into one application and use Native window to then launch two windows each one containing the separate app logic.
This may even offer advantages over using the local connection class, and of course help ease development and maintenance of two separate apps.
I'm building a big application with a lot of modules, i want to monitor them. Every module has its own different parameters that I'm interested in, ranging from performance, to logical statuses of components.
Eventually i need to concentrate all this information, and to be able to display it. Is there a framework i can use to achieve this? im using .net 3.5
You could try Munin. Once you install it - you simply write some plugins - small programs that will grab values from your application. And print them to command line in the form of values and labels. For example:
NoRDNS.value 10
Breakin.value 1
LogPassPAM.value 0
NoID.value 0
LogPass.value 100
InvUsr.value 23
LogKey.value 0
RootAttempt.value 0
Floats are OK too.
Munin will call the plugins periodically (every 10 minutes by default) and plot beautiful PNG graphs over time, track the min/max/average info, and organize everything in static HTML pages.
For you, probably the biggest problem with Munin would be setting it up on Windows. I never tried it on Windows - for me it works on Linux. Fortunately official website does have some options for Windows - in particular the munin-node-win32 program. You would need it.
Unfortunately, munin-node-win32 will only collect the data. To store (as RDD) and render the graphs (as PNG) you would need the Munin server. That can run locally or remotely. For running it locally, Cygwing may be and option but a sure way it to setups a virtual machine (see QUEMU or VirtualBox) running a simple setup of Ubuntu or Debian. In there, setting-up the Munin server is very easy - simply, run:
sudo aptitude install munin
and edit /etc/munin/munin.conf - placing the local IP address of the host where your application and munin-node are running. You don't even need to restart anything - Munin will be already configured in CRON so it will read the config file and do its job every 10 minutes as long as the VM is running. Just in case something goes wrong - the logs will be in the usual /var/log folder.
It looks pretty involved but it's easier than writing your own monitoring and graphing framework. I have a close relative who re-invented the wheel and wrote a monitoring/plotting system from scratch in .NET but I would trust Munin much more than his code.
At the end of the day you would point your web-browser to a private network IP address of the VM and get a nice performance report that looks like this.
Try wolfpack.codeplex.com - .net windows service based monitoring framework - fully extensible & ships with loads of plugins!
Provides passive monitoring (polling for data) and active - you app can pump data/kpis/stats into wolfpack. It also provides a geckoboard data api so you can get rich business dashboards in an instant.
PS: I wrote wolfpack!
You can use appfirst product. They have a way of discovering network flow and display what you described. This might solve your question.