Why does ICE16 complain about product names longer than 63 characters?


If you merge in the Internal Consistency Evaluators into your MSI package, you may run into error ICE16, complaining that the product name is longer than 63 characters. Why is this so bad?

Well, it isn't really, at least not any more. The original Windows 95 version of the Add/Remove Programs control panel did limit product names to 63 characters. (If you had a longer name, it didn't show up at all because the call to RegQueryValueEx failed with ERROR_MORE_DATA.) This limit was raised to around 259 characters starting with Windows 2000, the version that introduced the fancy list with icons and sizes. However, ICE rule 16 still checks against the old limitation because it doesn't know whether or not your program was designed to run on versions of Windows prior to Windows 2000.

If your program doesn't install on those older versions of Windows, then you can disregard the 63-character limit; the new limit is approximately 259 characters.

Comments (19)
  1. Erzengel says:

    A product name more than 63 characters? Are they including the entire company mission statement or something? Eeesh.

  2. pcooper says:

    Do you say “approximately 259” because you’re not sure, or because it varies based on something?

    [Because I don’t care. -Raymond]
  3. Sp says:

    > A product name more than 63 characters? Are they including the entire company mission statement or something? Eeesh.

    microsoft windows server 2003 small business server service pack 2

    66 characters.

    But we know, 640K.. err! 63 characters is enough for everyone.

  4. benjamin says:

    I kind of wish that this was still enforced, actually.

    I get tired of seeing programs that display as "Broderbund Presents a Maxis Program by Berkeley Systems: Kid Pix 2008." This goes double for programs that use the same text in the folder they create as part of the Start Menu registration, causing that lovely effect where your Programs menu becomes the width of a widescreen monitor.

    Obviously this isn’t Microsoft’s fault, so I guess I’m just ranting.

  5. John says:

    The longest entry under "Add/Remove Programs" on my computer (XP Pro SP2) is "Security Update for Microsoft Visual Studio 2005 Team Edition for Software Developers – ENU (KB937061)" at 102 characters.  Do I win a prize?

  6. John says:

    I’m also unsure about the 259 limit.  From my understanding, MAX_PATH is 260 to account for drive specification (i.e. "C:\") and a path of 256 characters (including a NULL terminator).  256 would make more sense than 260 (why would you worry about drive specification in product name?), but I guess everybody uses MAX_PATH size buffers for everything so why not use it for this as well.

  7. Erzengel says:

    >>microsoft windows server 2003 small business server service pack 2

    >>66 characters.

    That sounds pretty close to a "mission statement" to me… Do you really need the "Small Business"? It’s not like you’re going to have Small Business and Corporate installed at the same time. Do you really need to say "Service Pack 2" when you could say "SP2"? This is almost like one of those developer "taxes" that needs to be paid–stop with the ultra-long names. I don’t want to have to read all of that, and when a user sees such a long name they’ll briefly be confused (see that book which says you can only hold 5 things in your head at once).

    >>But we know, 640K.. err! 63 characters is enough for everyone

    The line has to be drawn somewhere. Personally I prefer the line to be drawn just before where the storage can’t hold it, like 255 so you can store the length in a byte, or 65535 so you can store it in an 4-byte int (which is why CIL allows for for way too many arguments–when are you going to have more than 255 arguments being passed into a function? If I’m a developer on your SDK and I need to pass 1000 arguments to your function, I’ll be "a little bit annoyed".)

  8. Jonathan O'Connor says:

    Why 259? That’s a weird number. Are you sure the 9 is the right way up :-)

  9. Thoe says:

    Bigger, ehh longer isnt always better – a product name should IMHO be able to fit 63-characters, my advice would if you get this warning: Try to make the name shorter!

    ie. “Microsoft Windows Server 2003 SMB – SP2” is just fine…

    This whole topic remind of another post:

    “The most important choice in writing is not what you say, it’s what you don’t say”

    [Writing clarity sometimes loses to legal issues such as trademark law. -Raymond]
  10. ::Wendy:: says:

    I think John should get a prize.

    My longest (on Vista) string scraped in at the old-style 63 characters from a company who’s legal team are necessarily heavy influencers the design procese:

    Microsoft Save as PDF Add-in for 2007 Microsoft Office programs

  11. Igor says:

    How about:

    Intel(R) Integrated Performance Primitives 5.2 for Windows* on IA-32 Intel(R) Architecture

    Btw, Raymond, is it 259 bytes or 259 (unicode) characters? :)

  12. Stewart says:

    Just guessing, but IIRC MAX_PATH is 260, WCHAR programNameBuf[MAX_PATH] would give you 259 characters plus a terminator – hence the old limit being 63, i.e. WCHAR programNameBuf[64]

  13. Rosyna says:

    is it 63/259 characters or bytes or name/sizeof(UTF-16 char)==63/259?

    I’m trying to think of the Korean children.

  14. Anon says:

    I think MAX_PATH is 260 so you can have

    C:<256 chars><NUL>

    Mind you 260 is multiple of 13, and there are 13 UC2-2 chars in a long filename in VFAT. So if you can do 256 you can also do 260. Maybe it dates back to Windows 98.

  15. Anon says:

    Ooh, I know!

    260 was considered a very lucky number by the long lived and peaceful Yn’Gon*Que aliens. They formed a short lived colony on Earth back in Jurassic Period (at spacetime coordinates 260,260,260,260,260) but they ran out of food, fought a terrible civil war, got hit by an asteroid shower and then decimated by a plague from Earth based bacteria.

    They were eventually wiped out when the endless waves of giant carnivorous (and almost completely blaster proof) dinosaurs that had attacked their compound day and night since they arrived finally overwhelmed and ate their few living defenders.

  16. Anon says:

    Ooh, I know!

    260 was considered a very lucky number by the long lived and peaceful Yn’Gon*Que aliens. They formed a short lived colony on Earth back in Jurassic Period (at spacetime coordinates 260,260,260,260,260) but they ran out of food, fought a terrible civil war, got hit by an asteroid shower and then decimated by a plague from Earth based bacteria.

    They were eventually wiped out when the endless waves of giant carnivorous (and almost completely blaster proof) dinosaurs that had attacked their compound day and night since they arrived finally overwhelmed and ate their few living defenders.

  17. Gedoe says:

    @Anon :) but don’t post it another 258 times :P

  18. LFN says:

    "Microsoft RAW Image Thumbnailer and Viewer for Windows XP Version 1.0 (Build 50)" is the longest I got.

    It’s installed in "C:Program FilesPro Imaging PowertoysMicrosoft RAW Image Thumbnailer and Viewer for Windows XP".

  19. SR says:

    How about only putting the program name in the "program name".

    eg: The program name is just "Word", Microsoft is the publisher, Office is the suite of programs and 2003 is the version. They are all important pieces of information, but they are NOT part of the program name. The program’s window title and icon should read just "Word" – the user has no need for the other stuff.

Comments are closed.