Hello, just got here, but I have used portable apps for sometime now, and thank you all greatly for them. Now my problem; my mom also uses some portable apps I got for her, although I made her my own launcher, and I thought, "hmm perhaps I can have others use this too" just clean it up, add more things, and voila. However, I read that there is a problem with using .NET which I only program using Visual Basic so far unfortunately, being a student. I also realize, that the program I have made is probably not truly "portable" that aside, I have made this program myself, using Visual Studio, and I reckon, it's not half bad. However my question, would it be possible to use a VB program portably, and by chance have it downloadable from this site?
If not, I have read some things, and am still confused as to whether distributing my app would be illegal T.T is there an alternate language one could suggest so as I may try to use it? perhaps something similar to VB.NET? or perhaps even C++ I may try (also learning) but in the meantime, any suggestions?
It's currently in a crappy stage the program itself, but it acts like a miniature desktop, currently theres not much you can do, not more my mom needed, but I am constantly trying to improve it.
We don't consider any app that requires the .NET framework to be installed to be portable (apps written in VB.NET, C#, etc). This is because most PCs will not have the appropriate .NET runtimes available and .NET can not be bundled on the flash drive like Java can (.NET requires an administrator to install it locally and involves a 50-195MB download, 10 minutes or more and may require a reboot). I wrote an explanation of it up on my personal site a while ago:
http://johnhaller.com/jh/useful_stuff/dotnet_portable_apps/
Sometimes, the impossible can become possible, if you're awesome!
Well, I had read this but was unsure if it could be hosted, with large notifications that it requires .NET, however this is not an option either way, so, is there any alternatives anyone knows that I could use? perhaps something similar to VB? or just anything -_-
"Video games are bad for you? That's what they said about Rock'n'Roll." -Shigeru Miyamoto
There is a .NET assembly to x86 compiler that generates native code. A bit expensive, but these languages are not totally lost.
"Those people who think they know everything are a great annoyance to those of us who do." Asimov
Interesting. I didn't even know that was possible. Well, this will be an option for freeware and commercialware portable software. Even some open source apps under the BSD, MIT and similar licenses. Of course, it can't be used on open source software under the GPL and similar as it would be combining it with closed source. Still, an interesting option for some apps.
Sometimes, the impossible can become possible, if you're awesome!
Mac OSX, GNU-Linux, *BSD, Solaris all can install the GNU-GPLed mono project, which is the .net framework.
if gcc is used on the system, there are bindings to add .net support for C# to the compiler and to libc.
Mono is available to most systems a looooong time ago, but it doesn't replicate .Net so exactly that apps can be ran with it instead.
Apps can, tough, be ported to Mono, but this is often a hard ting that takes more or less time, according to the app. See Paint.Net, for example, a version in Mono called MonoPaint is being developed by Miguel de Icaza for a long time, but still isn't finished (although there is already a working development version).
Blue is everything.
There are many answers to your "suggest a programing language to learn" question since everyone has their favorite. I'd suggest learning a language that can be run on multiple operating systems so I'd learn Java if I were you.
Cancer Survivors -- Remember the fight, celebrate the victory!
Help control the rugrat population -- have yourself spayed or neutered!
Sorry if I'm misinterpreting what your asking but you could try using the PortableApps Format and PAF some of the apps in the requested apps forum. There are tonnes more requests than the current number of devs are capable of working on and we're always happy to have another contributor
PortableApps.com Advocate
To clarify... The PAF format uses NSIS scripts, so go here... http://nsis.sourceforge.net/Main_Page, Once you learn the basics of this just look in the "Other\source" folder o a portable application and view the nsis files there to see how to make an application portable using NSIS. Nsis is fairly simple, but I just dont really like their documentation, though that is just me.
An eye for an eye makes the whole world blind.
Mahatma Gandhi,
Indian political and spiritual leader (1869 - 1948)
NSIS, ya? How came specification doesn't mention it?
One can use any language as long as the executables run on practically any machine.
"Those people who think they know everything are a great annoyance to those of us who do." Asimov
Only the installer has to use NSIS. You can code a launcher in any language you want or just code an app that doesn't need a launcher. The only caveat is that we recommend against AutoIT for launchers for official apps as the false positive rate is pretty high.
Sometimes, the impossible can become possible, if you're awesome!
There is a program available that removes a .NET programs requirements for the .NET runtime to be installed. It is called ILMerge. ILMerge is a text-based commandline program that merges the necessary assemblies into a single executable file. But being a console program, it is fairly difficult to use. For Delphi.NET and C# (I assume Turbo C#, but I am not sure) there is a gui called DILMerge. If there is enough interest, I may even try and write a gui that works for all .NET languages.
Anyway, here are the links for ILMerge and DILMerge.
ILMerge: http://www.microsoft.com/downloads/details.aspx?FamilyID=22914587-b4ad-4...
DILMerge: http://cc.codegear.com/Item.aspx?id=23227
Also, I would suggest Delphi.
It packages multiple assemblies into a single assembly, but it still requires .NET.
Sometimes, the impossible can become possible, if you're awesome!
There was one .NET program that I found that had been merged using ilmerge and it worked on a clean XP with no service packs installed and no .Net runtime installed. Can't remember what it was though. (I lost it when one of my disks got corrupted.)
Just a curious comment, but can you even consider apps written in MS VC++ portable any more? Even if they don't use .NET, anything written in VS2008 will more than likely require the VC++ 2008 Redistributable to run. I mean, I wrote a VERY small sample DLL for a concept I was working on, and it needed them to be installed on an XP test machine. I even compiled it w/o the /MD switch, which means it would not require msvcr90.dll.
You can include the C++ runtime with the app. For example, both ClamWin Portable (which uses the 8.0 runtime) and OpenOffice.org Portable (which uses the 9.0 runtime) include the appropriate runtime libraries in their packages and don't need it to be installed on the host machine to run.
Sometimes, the impossible can become possible, if you're awesome!
Hmm, good point.
Could you test this please, on a system that does not have the VC++ 2008 runtime installed, then see if you can get either DLL to load in any way?
It's a small app that just tries to load each DLL, and displays a message box with the handles, then unloads them.
I ask because I could NOT get either one to load on an XP system that did not have the VC++ 2008 runtime actually installed. I tried including the msvc*90.dll files in the same directory but was still unsuccessful.
msgdll.dll - compiled with /MD, needs msvcr90.dll FOR SURE
msgdll2.dll - compiled with /MT, does not need msvcr90.dll, but sill will not load if the runtime is not installed.
Thanks!
http://patrickpatience.com/nascent-project/wraithdu/files/testload.zip
It fails without MSCV installed (null pointers). But if you place Microsoft.VC90.CRT.manifest, msvcm90.dll, msvcp90.dll and msvcr90.dll in the same directory as them, it'll work. Even if VC++ 2008 runtimes aren't installed on the host PC.
Sometimes, the impossible can become possible, if you're awesome!
Ah, thanks. It was the manifest I was missing.
Damn. Any other ideas or something special I have to do when compiling the DLL? I tried your suggestion on a virgin XP SP3 system in a VM. I have the manifest and all 3 runtime DLLs in the same directory as the app, and it still can't load either of my DLLs.
That's odd as that's the exact same thing I did. Win XP SP3 fully patched in a VM that I keep in a 'clean' snapshot and rollback to after each test. That's where I got the two different results.
Make sure your manifest is right. You can snag it from OO.o Portable 3. It's in the bin directory I believe.
Sometimes, the impossible can become possible, if you're awesome!
What a bunch of weirdness. I grabbed the manifest and DLLs right from the Visual Studio redist -
C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT\
Apparently, these files are crap, well at least the manifest. Still using those DLLs, which are version 9.0.30729.1, and using the manifest from OO.o (which is for version 9.0.21022.8), the damn thing works. But if I change the version in the manifest to match the DLL version (30729.1), it DOESN'T work anymore. WTH?
It also seems that all my DLL compiled with /MD needs is msvcr90.dll, and all my DLL compiled with /MT needs is the manifest ONLY.
Could MS make this any more f'd up? Why the hell won't the OO.o manifest work with the matching DLLs and version info? BTW, the only other thing distinguishing in the manifest is the publicKeyToken, and it's the same for both runtime versions.
Ok, thank you all for the wonderful suggestions, but I suppose what I really need to know is, say, what was Firefox or Pidgin or any of these other apps coded in? or, actually, what was the PortableAppsLauncher coded in?
"Video games are bad for you? That's what they said about Rock'n'Roll." -Shigeru Miyamoto
Our launchers and installers are in NSIS. You could do a launcher or portable app in just about any language, though. The Platform/Menu is coded in Delphi.
Sometimes, the impossible can become possible, if you're awesome!
Ok, sorry for my, lack of knowledge, this is all very appreciated, guess I'll have to do more and more research, perhaps C++ for I am learning that also to program a robot for a competition known as FIRST, so much obliged, now to hit the books! (also, if anyone might, I will host the app to download just to get any opinions on the direction I was going if anyone would like)
"Video games are bad for you? That's what they said about Rock'n'Roll." -Shigeru Miyamoto
There's one specialized exception to the reservation about .NET: if you know that your portable app will be used on Vista machines, which come with .NET runtime or (b) other machines you are sure already have .NET runtime, there shouldn't be a huge problem. It might not get accepted for listing or distribution on this web site, but it sounds like you are working on a portable app for a specific purpose.
To be truly portable it needs to work on a plain vanilla machine. But if you just want to use it on your machine at school or at your cousin's home, there's not a particularly good reason why you can't use the techniques here to portablize any application.
Another long-shot for programming language for a portable app would be Java. You can take a JVM runtime with you on your stick, in case it is not installed, and if you are careful how you write the application, it won't leave information behind or otherwise misbehave. Java apps are apparently not being accepted for this site either, even those that are not dependent on the registry and otherwise behave appropriately. But that won't stop you from using it if you want.
I only mention that because I hear good things about Java as one of platforms Computer Scientists have decided are good, and there seems to be steady demand for Java programmers, which isn't quite as true for NSIS or Python (for example) programmers.
MC