C Board  

Go Back   C Board > Community Boards > Tech Board

Reply
 
LinkBack Thread Tools Display Modes
Old 04-23-2007, 03:51 AM   #1
Math wizard
 
Join Date: Dec 2006
Location: Minot, ND, USA
Posts: 521
Releasing a program - what is needed? A few Q's

So far, I've been testing my program and hunting for bugs. I have a few questions:

1. I'm about to release my program. Are there any special steps needed?
2. My program is only intended as freeware rather than being sold - are there any license-related restrictions for using Visual C++ 2005 Express (like splash screens, notices that it was created with this IDE, license fees, etc.)?
3. How can I tell what systems my program can run on (like CPU speeds, memory, OS, etc.)?
4. How can I test the program on other computers and fix bugs I may not get on mine?

I'm using Visual C++ 2005 Express.
ulillillia is offline   Reply With Quote
Old 04-23-2007, 05:32 AM   #2
and the hat of Jobseeking
 
Salem's Avatar
 
Join Date: Aug 2001
Location: The edge of the known universe
Posts: 21,665
> 1. I'm about to release my program. Are there any special steps needed?
How big is the audience?

At the least, I would say you need a source control system. After several versions, people will start sending you bug reports against older versions. A source control system will make it easier for you to get back to older versions to verify the bug, and/or compare with later versions which may have fixed it.

> are there any license-related restrictions for using Visual C++ 2005 Express
http://support.microsoft.com/kb/326922
But if you just release source and expect people to build it themselves, then it doesn't apply.

> 3. How can I tell what systems my program can run on (like CPU speeds, memory, OS, etc.)?
What sort of API calls have you made?
If it's just libc or std:: then it should run pretty much anyware.
You can check each API call to find out which versions of an OS it is supported on.

For memory, look at your dynamic memory allocations. If most of the allocs are for storing large file data, then you can make that kind of statement in your release notes.

> 4. How can I test the program on other computers and fix bugs I may not get on mine?
Detailed bug reports from other people.

If the code is going to end up being compiled on many different OS, using many different compilers, then one of the first things you find out is exactly how portable your 'C' or 'C++' is. At the least, turn up the warning level to /W4 on your compiler, and grab say MinGW as an alternative reference just to make sure it compiles with that as well.
__________________
If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.

Salem is offline   Reply With Quote
Old 04-23-2007, 04:51 PM   #3
Math wizard
 
Join Date: Dec 2006
Location: Minot, ND, USA
Posts: 521
Quote:
Originally Posted by Salem View Post
> 1. I'm about to release my program. Are there any special steps needed?
How big is the audience?

At the least, I would say you need a source control system. After several versions, will start sending you bug reports against older versions. A source control system will make it easier for you to get back to older versions to verify the bug, and/or compare with later versions which may have fixed it.
The audience? I don't know and can't really tell. I intend on releasing it on my website as closed-source freeware (the EXE and the related BMP and TGA files, packed in a ZIP file). I may later list it on software download sites also as freeware.

Quote:
Originally Posted by Salem View Post
> are there any license-related restrictions for using Visual C++ 2005 Express
http://support.microsoft.com/kb/326922
But if you just release source and expect people to build it themselves, then it doesn't apply.
I'm confused on what all this means. How do you do this sort of thing, the DLL's ya know?

Quote:
Originally Posted by Salem View Post
> 3. How can I tell what systems my program can run on (like CPU speeds, memory, OS, etc.)?
What sort of API calls have you made?
If it's just libc or std:: then it should run pretty much anyware.
You can check each API call to find out which versions of an OS it is supported on.

For memory, look at your dynamic memory allocations. If most of the allocs are for storing large file data, then you can make that kind of statement in your release notes.
Well, then the OS is Windows 98 (due to AlphaBlend and the lack of support Windows 95 has for the alpha channel - all others can use Windows 95). I don't have any memory being dynamically allocated (solely because I don't know how). The BMPs and TGAs use about 6 MB. The front and back buffers use about 2.8 MB and the program who knows what. I'd say 10 MB?

Quote:
Originally Posted by Salem View Post
> 4. How can I test the program on other computers and fix bugs I may not get on mine?
Detailed bug reports from others.

If the code is going to end up being compiled on many different OS, using many different compilers, then one of the first things you find out is exactly how portable your 'C' or 'C++' is. At the least, turn up the warning level to /W4 on your compiler, and grab say MinGW as an alternative reference just to make sure it compiles with that as well.


Another question:
5. Do I just copy/paste the EXE as it is zipping it up and the images along with it, or do I need to do something else before copying it then zipping everything up?
ulillillia is offline   Reply With Quote
Old 04-23-2007, 06:20 PM   #4
MENTAL DETECTOR
 
whiteflags's Avatar
 
Join Date: Apr 2006
Location: United States
Posts: 3,291
> I'm confused on what all this means. How do you do this sort of thing, the DLL's ya know?

Since you are distributing a windows application, you have to distribute the CRT DLL that goes with your compiler and the framework you used or most end users will not be able to run it. Details were pretty clear on that page. Either build an installer program that will unpack everything into the correct place and take care of other things (searching for installed components, registry keys, whatever else you need to do), or include installation instructions.

> 5. Do I just copy/paste the EXE as it is zipping it up and the images along with it, or do I need to do something else before copying it then zipping everything up?

You would want to include everything that the end user will need to not just use your program, but use it effectively and legally. This includes copies of installation manuals, user docs, web site links, license agreements you distribute the app under, and other "readme" type files.
whiteflags is offline   Reply With Quote
Old 04-23-2007, 07:52 PM   #5
Math wizard
 
Join Date: Dec 2006
Location: Minot, ND, USA
Posts: 521
Well, what is a CRT (C run-time library)? Is it when something like stdio.h or math.h is included as an include? Or, is it something else? If so, could you explain? I see 6 cases of that Msvcr80.dll file, 4 of which in the platform SDK at 480 KB (those with win64 and AMD64 as the last part of the path), another in the Windows/system32 folder (at 572 KB), and the last at a strange location in the Windows folder with a string of hex digits and very long and with a 612 KB file size. If I do need to distribute this DLL file, then which one do I distribute?

Edit: I figured I'd post the list of paths, just in case:

C:\WINDOWS\system32\msvcr80.dll
C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a 1e18e3b_8.0.50727.42_x-ww_0de06acd\msvcr80.dll
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin\win64\msvcr80.dll
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin\win64\x86\AMD64\msvcr80.dll
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Bin\win64\msvcr80.dll
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Bin\win64\x86\AMD64\msvcr80.dll

The last four are 480 KB, the top one is 572 KB and the second one is 612 KB. I thought it might help.

Last edited by ulillillia; 04-23-2007 at 08:01 PM. Reason: Provided list of paths
ulillillia is offline   Reply With Quote
Old 04-23-2007, 08:46 PM   #6
MENTAL DETECTOR
 
whiteflags's Avatar
 
Join Date: Apr 2006
Location: United States
Posts: 3,291
> Well, what is a CRT (C run-time library)? Is it when something like stdio.h or math.h ... ?

A little bit. Just about the only thing I know for sure about this library is that most programs compiled in VC++ use some of that code. Some programs link it statically but most don't. What's in there is some pretty basic utilities that programmers use to do things. There's stuff to compare strings in there, parts of stdio, parts of cos, sin, and other things.

For people who own that compiler, a copy of the DLL is stored in the system folders for convenience. The reason that you now need to distribute it is because... you know, they wrote ALL of this down. Read what Salem linked.

> is included as an include?
No. A DLL is compiled but only linked at run time. You shouldn't include it explicitly.

> If I do need to distribute this DLL file, then which one do I distribute?
I'd prefer if you found out on your own because I don't know. This was from the related links part of the documentation that Salem pointed you to and should tell you. http://msdn2.microsoft.com/en-us/lib...14(VS.71).aspx
whiteflags is offline   Reply With Quote
Old 04-23-2007, 09:06 PM   #7
Math wizard
 
Join Date: Dec 2006
Location: Minot, ND, USA
Posts: 521
I don't use .NET nor do I even know what it is or what its for. Given what I'm seeing, it seems as if I need the one in the system32 directory. I wonder what's with the varied file sizes. The one thing the document doesn't seem to mention is where this file should go relative to the program itself? Does it have to be in Program Files? After all, one downloading it and unzipping it would likely either have it on their desktop or somewhere in their "My Documents" folder and quite unlikely in the "Program Files" directory. There is no setup or installer program, just simply unzipping a ZIP file (using the legacy 2.0 format, the most widely supported, unlike something like enhanced deflate or bzip).
ulillillia is offline   Reply With Quote
Old 04-23-2007, 09:35 PM   #8
MENTAL DETECTOR
 
whiteflags's Avatar
 
Join Date: Apr 2006
Location: United States
Posts: 3,291
Quote:
Originally Posted by ulillillia View Post
The one thing the document doesn't seem to mention is where this file should go relative to the program itself? Does it have to be in Program Files?
It just needs to be filed away where the executable is, most likely. The reason the documentation spoke of Program Files in the first place is probably because most executables live there in the file system. Not to mention that most programs distributed this way merit storage there if only because they are so big and involve lots of parts that need to stay organized.

You might want to reconsider your reservations about distributing source code. You could always just have them compile binary files or something of that nature; especially if your code is standard or targeted toward a specific platform. Closed source distribution doesn't mean that you have to give them executables.
whiteflags is offline   Reply With Quote
Old 04-23-2007, 10:44 PM   #9
Math wizard
 
Join Date: Dec 2006
Location: Minot, ND, USA
Posts: 521
Well, what my program is meant to do is explain what the effects of background scaling, speed, and other common things in my animations I've been making since late 2001 are. I could release this as open source and provide the executable, but the problem with that is the fact that others would add or use things I don't have a hint to as what they are and would otherwise leave me out of my own project! That's the only reason I'm not going open source (although I've ended up posting most of the code here anyway). I can see the many advantages of going open source (bugs I don't know how to fix can be fixed by more advanced programmers is one such example). Not only that, but the target audience may not understand what functions are, what a double or short is (or their differences), what arrays are, or why the semicolons are at the end of most every line and may think of it as a garbled up mess. Another reason is that my programs (after this, starting with The Supernatural Olympics) are intended to replicate what I do in my mind game, just as most of my animations are (as animated GIFs). I made a blog post in March of 2007 explaining the reasoning, but another one going in more depth is planned for my next entry. Compressed in Winzip, not including the EXE or the DLL, I use about 520 KB (could be 350 KB if I can get the grass to compress better than 20%), an acceptable download size for dial-up users.
ulillillia is offline   Reply With Quote
Old 04-28-2007, 12:18 AM   #10
Math wizard
 
Join Date: Dec 2006
Location: Minot, ND, USA
Posts: 521
Does anyone have any ideas which msvcr80.dll file I need? The documentation only specifies which version, but it doesn't give a hint as to which location and I have 6 different locations. The first listed and one of the last 4 both aren't it and I can only guess. Can someone tell me which location of the msvcr80.dll file that I need?
ulillillia is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Help needed with program - urgent thanks! lildevil C Programming 1 03-09-2008 06:45 AM
Drawing program architecture - information needed Marko_D Windows Programming 1 11-28-2003 07:46 PM
Date program starts DOS's date jrahhali C++ Programming 1 11-24-2003 05:23 PM
Bug favour needed re: C++ Program Nicole C++ Programming 2 12-05-2001 07:13 AM


All times are GMT -6. The time now is 02:27 AM.


Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.3.2

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22