Thread: Releasing a program - what is needed? A few Q's

  1. #1
    Math wizard
    Join Date
    Dec 2006
    Location
    USA
    Posts
    582

    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.

  2. #2
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,659
    > 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.
    If at first you don't succeed, try writing your phone number on the exam paper.

  3. #3
    Math wizard
    Join Date
    Dec 2006
    Location
    USA
    Posts
    582
    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?

  4. #4
    Lurking whiteflags's Avatar
    Join Date
    Apr 2006
    Location
    United States
    Posts
    9,612
    > 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.

  5. #5
    Math wizard
    Join Date
    Dec 2006
    Location
    USA
    Posts
    582
    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

  6. #6
    Lurking whiteflags's Avatar
    Join Date
    Apr 2006
    Location
    United States
    Posts
    9,612
    > 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

  7. #7
    Math wizard
    Join Date
    Dec 2006
    Location
    USA
    Posts
    582
    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).

  8. #8
    Lurking whiteflags's Avatar
    Join Date
    Apr 2006
    Location
    United States
    Posts
    9,612
    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.

  9. #9
    Math wizard
    Join Date
    Dec 2006
    Location
    USA
    Posts
    582
    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&#37, an acceptable download size for dial-up users.

  10. #10
    Math wizard
    Join Date
    Dec 2006
    Location
    USA
    Posts
    582
    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?

Popular pages Recent additions subscribe to a feed

Similar Threads

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