MonoGame Deployment - windows

I have a game in MonoGame, and I'd like to make it downloadable from my website. I'd like it if people could just download the game and then play it, though I wouldn't mind if they installed it as well. (it's a very small game, however, so I don't think they'll want to go through that process, though perhaps I'd like to offer both options!)
For now, I'd just like to deploy to Windows and make sure that works, but any advice on how to compile/deploy to Mac/Linux would be great, too.
Thanks!

This actually something I have always wanted to know but found little info on. From my experience which is not by any means the final answer and just something to you help down the right path...
You can follow this:How to: Publish a ClickOnce Application using the Publish Wizard
Now in my example project I was able to download it and had to install it. I know this is only one of the ways you asked but for the other way I believe you would want to make your project an executable. Which you can find a question on it here. Hope this helps. :)

If you compile your game, you end up with a bin folder that contains a .exe file, and if you do this on mac you also get a .app file.
These are actual apps that you can play by clicking on them. This also works on other machines that don't have your development environment. You might need to include the .dll files that are in the bin folder. (I haven't tested this).
Of course, downloading an .exe is strongly discouraged since there is no way for your users to know if they are installing malware, but in theory this is possible!

Related

Moving Xcode project onto another machine - How do I handle files referenced from outside the project folder?

thanks for taking a look.
I had bought the cheapest Mac Mini I could so that I could do some iOS dev, and my project has outgrown it. So I bought a MacBook Pro! It's awesome, uploading my parse cloud code took 15-20 minutes on the mini, and is instantaneous on the MBP.
However, I'm having trouble getting my Xcode project to build. Some of my frameworks are red in the Project Navigator, and I notice that their paths are /Users/[account name]/Documents/Downloads/[framework files]. It looks like on my mini I had created references instead of copying the files into my project.
I know it's against protocol here, but I haven't attempted much out of fear of breaking something. I have tried some googling, but I haven't found any relevant info. I may just be searching the wrong stuff, so feel free to mark this as duplicate and send me on the right path.
I'm using github to host a private repo for the project. What steps should I take to properly move the necessary files into my project folder, re-push the project to github, and pull back onto the other machine?
I am not going to be working from the mini anymore, at least on this project, so if it's easier to copy the file over the the MBP, put it in the project folder, and change the reference or something similar, I can do that. And I haven't made any changes to the code on the MBP, just worked on resetting up signing identities / provisioning profiles. I can always pull the project again if something gets mucked up there, but I'm nervous about changing stuff on the mini, breaking stuff, and not being able to build out my project at all.
Any tips on moving forward before I try stuff myself? Again, sorry that this breaks protocol for posting, I just want to avoid breaking my project... this isn't something a simple undo could fix, and I can't risk losing the entire project because of something stupid.
I would do this:
make sure all your projects are in source code control and committed -- good practice.
backup MacBook Pro (time machine), just in case.
copy the external dependencies over to new MacBook Pro in a way that makes sense.
one by one, delete the red frameworks and re-add them to the projects. Your choice as to copy vs reference.
Afterwards, I'd consider migration to something like Cocoapods for management of dependencies. I say consider because that's exactly the state I'm in - considering this option.
This should move you forward fairly safely. Best of luck!

Cannot get permission in Xcode

To anyone who can help,
So I confess to not being great with computers or apps. In fact, this is my first experience creating an app, so please be nice with me. The app I am creating is for a school project and needs to be able to record audio and save these recordings. In order to do this, I added "AVFoundationFramework" to the build phases under "Link Binary With Libraries" and attempted to edit AVAudioRecorder.h in the style of what it says to do on the online Developer Tools. I got this error message:
"'AVAudioRecorder.h' is locked for editing and you may not be able to save your changes. Do you want to unlock it? 'AVAudioRecorder.h' is currently locked because you are not the current owner of the file and do not have write permission." And then it gives me the options "Don't Unlock" and "Unlock". Note that I got the latest version of Xcode that I am using in the App Store and never moved it or any of the Xcode files I have worked with to or from any other computers, so this should not be an issue.
When I hit "Unlock", this message displays: "The file 'AVAudioRecorder.h' could not be unlocked. Could not add write permission to the file because you do not own it. Try modifying the permissions of the file in the Finder or Terminal."
I did both of those things - I made sure I have Read & Write permission for the folder its in, and I hit "Apply to Enclosed Items" and that didn't work. I got help from someone better with computers than me and we looked in the Terminal and, according to him, I have permission according to the Terminal. I then took my computer to the Apple Store, where they found AVFoundation as a file in my Hard Drive and gave it Read & Write permission in there, and they did some other things as well that I didn't understand involving permissions. They even re-installed my computer and that didn't help.
So I'm at a loss. I apologize if this has been asked already, but I did look and see if anyone had asked similar questions and gotten any answers other than what I have already tried that hasn't worked. The closest I found was this in response to a very similar question with UIViewController.h where he said:
"This looks like you attempted to edit a header file belonging to a system framework in iOS which are protected against unintentional changes like this, possibly because the assistant editor in Xcode (usually shown in the right-hand editor) showed this header at some point.
The only solution here is to revert your changes unless you know exactly why you are making changes in those files."
Sadly I do not know what this means and can't work from there. So if someone can either explain what the above quote means in simple terms OR how to otherwise fix the problem, that would be amazing.
First off, congrats on your first app! To answer answer your question: don't do this! ;-) You should never edit SDK header files. These warnings are for your own benefit. You can really screw things up otherwise. Not sure what info/documentation you were seeing that made you think that you were supposed to, but that's definitely not the right thing to do. But don't feel bad... this stuff is confusing at first.
I would suggest you find an example app that does recording and playback, compile it in Xcode, and make sure it works on your device. Then study it. See how they did things. Create your own Xcode project and try to recreate what they did. That's probably the best way to approach learning this.
Here's a tutorial showing how to use AVAudioRecorder that you might find helpful. Good luck!
http://www.techotopia.com/index.php/Recording_Audio_on_iOS_7_with_AVAudioRecorder

xcode and ad-hoc-distribution: can i bring xcode to automatically make an .ipa?

can i make, that when compiling in the adhoc-profile, i made for xcode, pack it into a zip complaining to itunes or an ipa, give it an automatic name (optional ... appname_date_time.zip) and copy it to a network-path ?
so, what is really my problem: i think i understood, that in a past-build-phase i can run a shell-script. but i havenĀ“t done many shell-scripting now. can i zip on osx with the shell and for this case in a simple way ?
and can i let the message "no provisioned iphone connected" be gone ?
why ?
i want, that some company-internal people can load my software without email-spamming on each new release.
ok, build and archive builds at least the .ipa automatically. the rest might be just a second click and a script. so if no one has a more elegant solution, this is enough
Check out the BetaBuilder gem - https://github.com/lukeredpath/betabuilder. It worked about 90% of the way for me - I had to re-route its guts a bit to make it work, but my fork (https://github.com/dts/betabuilder) works for me. Hopefully, you can cobble together a solution for you (it was worth the effort for me!)
You can automate this, but need to get after the code signing, which is behind the last build phase you can add to Xcode. So the solution is creating a new aggregate target and define the shell script in there.
Here is an example of the whole process including a readme file on how to set it up: https://github.com/TheRealKerni/HockeyKit/tree/develop/client/iOS/Beta%20Automatisation

Will PackageMaker work for me?

I have an application to be distributed.
Pretty much everything is self-contained within one bundle so I could just put the bundle in a DMG for the first version-- however this won't work for upgrades, so I figured I'd best work out the process ahead of time.
I've been looking at PackageMaker and it seems straightforward enough. However I have a couple of very specific requirements which may cause problems, and it wasn't apparent from reading the PM docs as to whether this is even possible:
First of all, I want the installer to automatically choose between installing two different versions of the app, depending upon whether a previous version of the application has previously been installed.
Secondly, I don't want to just overwrite the previous application's bundle, I just want the installer to overwrite files within it and add new ones -- in other words, I want certain files within the application bundle to remain from the previous version.
Is this something I could achieve with PackageMaker, or should I look for a different approach?
You can do a lot with an installer package, for example run a shell script which in turn allows you to do everything.
I get the feeling that you're doing it not the Mac way. It's uncommon to store data in the application bundle, normally such stuff goes to ~/Library/Application Support/. I presume that those two different applications are quite similar, why not just set a preference?
Personally, I feel that today a .zip is the best way to distribute your apps. It gets automatically decompressed and shows up with your application icon in the downloads stack. (Only if you get it from the internet, of course.)
For updating look at the sparkle framework. The forst install is just copy the application bundle from the internet and te user then just asks to do update and does not have to leave your application to do anything

How to edit a FF add on?

Theres a firefox add on i would like to edit. I never made a plugin before and have looked at one before. Is there a tutorial or something on how to -edit- one? I do not know how to test the add on and ext
There's not much difference between "editing" and what the add-on developers do.
You can simply locate the add-on in the /extensions/{add-on's ID} folder and make your changes to it (if parts of its code are in a JAR, you'll need a program that can edit files in zip archives, like Total Commander on Windows; in this case you also need to edit the code while Firefox is closed). Restart Firefox to see the changes.
This way is OK for few simple changes, but pretty inconvenient otherwise, so you'll want to set up the development environment if you're doing non-trivial changes. It's nothing scary if you have some technical background.

Resources