x
This website is using cookies. We use cookies to ensure that we give you the best experience on our website. More info. That's Fine
HPC:Factor Logo 
 
Latest Forum Activity

How to structure folders for Windows CE software archiving

Moderators: C:Amie

Jump to page : 1
Now viewing page 1 [15 messages per page]

Karpour Page Icon Posted 2020-11-17 12:16 AM
#
Avatar image of Karpour
Subscribers
H/PC Philosopher

Posts:
279
Location:
Austria
Status:
So this is something that I've honestly been thinking too much about, but I finally want to get my software collection in order!

I used to have my software sorted by Windows ce version / category / appname+version number

That's not a great system for many reasons, so heres what I came up with recently


 
CompanyName ApplicationName/ 
  index.json <- metadata, see below 
  README.txt 
  v0.1/ 
    index.json <- values in here override the index.json one level up 
    README.txt <- version-specific README 
    CE1.0/ 
      MIPS/ 
        app.exe 
      SH3/ 
        app.exe 
      MIPS_SH3_SETUP/ 
        setup.exe 
        extrasetupfile.ext 
      SRC/ 
         source.zip 
    CE2.0/ 
      MIPS/ 
        app.mips.cab 
      SH3/ 
        app.sh3.cab 
  v2.0/ 
     CE2.0/ 
        [...] 
  screenshots/ 
    [gif screenshots for backwards compatibility] 
the index.json file would be something like
 
type title = { 
    platform: ""; 
    developer: string, 
    publisher: string, 
    title: string, 
    title_long: string, 
    categories: string[], 
    license: string, 
    successor_of: string, <- if a software changed names through the years, reference the previous name here 
    description: string, 
    tags: string[], 
    release_Date: string, 
    languages: string[], 
    website: string, 
} 


I know this is a somewhat dry topic, but maybe someone has an idea if I'm missing some edge cases here!

Not sure if i should always explicitly include in the (for example) "CE2.0" folder name whether an app is for HPC or PsPC/PPC (also sometimes the same exe works on both CE2.0 HPC and CE2.01 PsPC)
 Top of the page
C:Amie Page Icon Posted 2020-11-17 10:13 AM
#
Avatar image of C:Amie
Administrator
H/PC Oracle

Posts:
15,474
Location:
United Kingdom
Status:
The SCL generates:
{ 
  "__attribution": "www.hpcfactor.com Software Compatibility List (SCL). For use in the public domain with attribution to https://www.hpcfactor.com/scl.", 
  "name": "SlashToShift", 
  "version": "1.50", 
  "developer": "QTA Software", 
  "licenseType": "Freeware", 
  "licenseDescription": "The program is completely free to use.", 
  "averageUserRating": "5", 
  "cost": "0", 
  "costCurrency": "GBP", 
  "shortDescription": "NTT Do Co Mo Sigmarion I/II/III Key Remapper", 
  "description": "SlashToShift is an application designed for the NTT DoCoMo Sigmarion H/PC series to modify the original key settings, especially for users who are not used to the nonstandard keyboard layout. In addition to reassigning the “/” key as “R Shift” (as the name of the application suggests), this application also allows for a wide range of possibilities of reassigning the values to the other keys on the keyboard.  This application is intended to run on Sigmarion I, II (MIPS processor) and III (ARM processor) only. Do not run this program on other devices!", 
  "instructions": "1. Download the .zip archive. Extract the archive. Go to the extracted "s2s150" folder. For Sigmarion I/II, go to "MIPS"; for Sigmarion III, go to "ARM"\r\n\r\n2. Copy the file "S2S.exe" to any location on the handheld or the storage card. In the following example, the application is copied to the "Windows" folder on the handheld", 
  "windowsCeSupport": [ 
    { 
      "version": "Windows CE 2.11", 
      "platform": "Handheld PC 3.0 Professional" 
    }, 
    { 
      "version": "Windows CE 3.00", 
      "platform": "Handheld PC 2000" 
    }, 
    { 
      "version": "Windows CE .net 4.10" 
    } 
  ], 
  "cpuSupport": [ 
    { 
      "architecture": "MIPS 4000" 
    }, 
    { 
      "architecture": "StrongARM SA1110" 
    } 
  ], 
  "tags": [ 
    "Sigmarion", 
    "Key Remapper" 
  ], 
  "cagegories": [ 
    "Keyboard & Key Mappers" 
  ], 
  "addedBy": "hpcboy", 
  "addedOn": "22/10/2020 7:14:48 PM" 
}
 Top of the page
Karpour Page Icon Posted 2020-11-17 12:35 PM
#
Avatar image of Karpour
Subscribers
H/PC Philosopher

Posts:
279
Location:
Austria
Status:
Ah that's helpful. thanks!

One thing I need to figure out still is how to sort according to Windows CE version.

If it was just HPC software, things would be simple, but as said there are some titles that work on both CE2.0 HPCs and CE 2.01 PsPCs, same goes for PocketPC2000 and Windows CE 3.0, though usually it's dedicated builds.

My list so far:

CE1.0 
CE1.01 
CE2.0 [PsPC] [HPC] 
CE2.01 [PsPC] [HPC] 
CE2.11 [PsPC] [HPC] 
CE3.0 [PPC] [HPC] 
CE3.??? [PPC] <-- which version number does PPC2002 have? 
CE4.1 
CE4.2 
CE4.?? <- WM2003 (is WM2003 just using the CE4.2 core?) 
CE5.0 
CE6.0



I don't have any PPC2002 here to try, but will a PPC2000 device run PPC2002 apps? They both seem to have a version number of 3.0?
 Top of the page
C:Amie Page Icon Posted 2020-11-17 2:15 PM
#
Avatar image of C:Amie
Administrator
H/PC Oracle

Posts:
15,474
Location:
United Kingdom
Status:
I think that your taxonomy is going to wind up being too complex to be manageable. You are going to need a lot of binary file duplicates to satisfy that taxonomic structure.

What happens with edge cases where something works on all platforms because it is a Thumb binary, CEF binary or a .net binary?

What are the virtues of having a dump by OS version? No one has ever asked for the SCL to show a list of all HPC2000 apps. They either want a category/tag search or everything for a HP Jornada 720.

Your taxonomy also precludes the fact that and CE 3 device can run any CE 2.11, 2.10, 2.0 or 1.0x binary as long as it is for the same architecture.

You might be better off with
<architecture> <platform> <min version> <developer> <app> <version>

SH3, WINCE, 1.0
MIPS, PPC, 2000
SH3, PsPC, 2.01
ARM, WINCE, 3.0
NETFX, ANY, 3.0
THUMB, WINCE, 2.11
XSCALE, PPC, 2005
X86, WINCE, 2.10
x86, WINCE, 2.10

That will reduce duplication somewhat and you know if you go to "MIPS, WINCE, 1.0" you should intrinsically know that the app will run on H/PC 1, H/PC 1.01, H/PC 2.0, H/PC Pro, HPC2000, 2.10, 2.11, 3.0, 4.0, 4.1, 4.2, 5.0, 6.0 and 7.0 MIPS devices.

HPC:Factor Elara doesn't even bother trying as all of the meta data is in the RDBMS. The actual server file system is just an arbitrary blob store grouped by object relatedness - a host installer .exe being associated with a its MIPS cab, SH3 cab and the PDF user manual.
 Top of the page
Karpour Page Icon Posted 2020-11-17 2:47 PM
#
Avatar image of Karpour
Subscribers
H/PC Philosopher

Posts:
279
Location:
Austria
Status:
The way I'm doing it right now doesn't require any duplicates, I'm just sorting everything by architecture and minimum supported CE version. That something for CE1.0 will also run on CE2.0 is implied of course.
Some few apps have different binaries for CE1.0 and CE2.0 for the same version for example, so I want to be able to reflect that in the folder structure
 Top of the page
hpcboy Page Icon Posted 2020-11-17 4:54 PM
#
Avatar image of hpcboy
Subscribers
H/PC Philosopher

Posts:
256
Location:
Hong Kong SAR
Status:
That's fantastic work. Way to go! Thanks!
 Top of the page
Karpour Page Icon Posted 2020-11-17 5:12 PM
#
Avatar image of Karpour
Subscribers
H/PC Philosopher

Posts:
279
Location:
Austria
Status:
I did some research and came up with this list of Windows CE Core versions. All other Windows CE versions are just variations of these cores:

const WindowsCECoreReleases: { [key in WindowsCEVersion]: WindowsCEVersionInfo; } = { 
    "1.0": { 
        name: "Windows CE 1.0", 
        releaseDate: "1996-11-16", 
        mainStreamSupportEndDate: "2001-12-31", 
    }, 
    "1.01": { 
        name: "Windows CE 1.01", 
        releaseDate: "1997-06-25", 
        mainStreamSupportEndDate: "2001-12-31", 
    }, 
    "2.0": { 
        name: "Windows CE 2.0", 
        releaseDate: "1997-09-29", 
        mainStreamSupportEndDate: "2002-9-30", 
    }, 
    "2.01": { 
        name: "Windows CE 2.01", 
        releaseDate: "1998-01-08", 
        mainStreamSupportEndDate: "2002-9-30", 
    }, 
    "2.10": { 
        name: "Windows CE 2.10", 
        releaseDate: "1998-03-01", 
        mainStreamSupportEndDate: "2002-9-30", 
    }, 
    "2.11": { 
        name: "Windows CE 2.11", 
        releaseDate: "1998-07-01", 
        lifecycleStartDate: "1998-10-31", 
        mainStreamSupportEndDate: "2002-9-30", 
    }, 
    "2.12": { 
        name: "Windows CE 2.12", 
        releaseDate: "1999-09-28", 
        lifecycleStartDate: "1999-08-31", 
        mainStreamSupportEndDate: "2003-9-30", 
        extendedSupportEndDate: "2005-9-30", 
    }, 
    "3.0": { 
        name: "Windows CE 3.0", 
        releaseDate: "2000-06-15", 
        lifecycleStartDate: "2000-7-30", 
        mainStreamSupportEndDate: "2005-9-30 ", 
        extendedSupportEndDate: "2007-10-9", 
    }, 
    "4.0": { 
        name: "Windows CE .NET 4.0", 
        releaseDate: "2002-01-07", 
        lifecycleStartDate: "2002-4-1", 
        mainStreamSupportEndDate: "2007-7-10 ", 
        extendedSupportEndDate: "2012-7-10", 
    }, 
    "4.1": { 
        name: "Windows CE .NET 4.1", 
        releaseDate: "2002-06-01", 
        lifecycleStartDate: "2002-10-29", 
        mainStreamSupportEndDate: "2008-1-8 ", 
        extendedSupportEndDate: "2013-1-8", 
    }, 
    "4.2": { 
        name: "Windows CE .NET 4.2", 
        releaseDate: "2003-04-23", 
        lifecycleStartDate: "2003-6-1", 
        mainStreamSupportEndDate: "2008-7-8 ", 
        extendedSupportEndDate: "2013-7-9", 
    }, 
    "5.0": { 
        name: "Windows CE 5.0", 
        releaseDate: "2004-07-09", 
        lifecycleStartDate: "2004-8-31", 
        mainStreamSupportEndDate: "2009-10-13 ", 
        extendedSupportEndDate: "2014-10-14", 
    }, 
    "6.0": { 
        name: "Windows Embedded CE 6.0", 
        releaseDate: "2006-11-01", 
        lifecycleStartDate: "2006-11-30 ", 
        mainStreamSupportEndDate: "2013-4-9 ", 
        extendedSupportEndDate: "2018-4-10", 
    }, 
    "7.0": { 
        name: "Windows Embedded Compact 7", 
        releaseDate: "2011-03-01", 
        lifecycleStartDate: "2011-3-15 ", 
        mainStreamSupportEndDate: "2016-4-12 ", 
        extendedSupportEndDate: "2021-4-13", 
    }, 
    "8.0": { 
        name: "Windows Embedded Compact 2013", 
        releaseDate: "2013-06-13", 
        lifecycleStartDate: "2013-8-11 ", 
        mainStreamSupportEndDate: "2018-10-9 ", 
        extendedSupportEndDate: "2023-10-10", 
    }, 
}; 
 Top of the page
CE Geek Page Icon Posted 2020-11-18 8:30 AM
#
Avatar image of CE Geek
Global Moderator
H/PC Oracle

Posts:
12,239
Location:
Southern California
Status:
The first Palm-size PCs had a Windows CE 2.01 kernel, so it isn't technically accurate to include the PsPC in the CE 2.0 category. Pocket PC 2002 was based on a CE 3.0 core; it was just an updated interface. And yes, Windows Mobile 2003 was based on a CE 4.2 core. I've never been clear whether Windows Mobile 5 and 6 were based on CE 5.01 and 5.02 builds, or if they were 5.1 and 5.2.
 Top of the page
Karpour Page Icon Posted 2020-11-18 12:39 PM
#
Avatar image of Karpour
Subscribers
H/PC Philosopher

Posts:
279
Location:
Austria
Status:
CE Geek: I came across some software that claimed that it was compatible with CE2.0 as well as Palm-sized PCs, I'm not sure how it works, I only have one PsPC and that one is 1000km away right now.
I wonder if PsPCs will run HPC software from lower Windows CE versions or if they check for some flag that indicated that the app was compiled for PsPC..?
 Top of the page
C:Amie Page Icon Posted 2020-11-18 3:04 PM
#
Avatar image of C:Amie
Administrator
H/PC Oracle

Posts:
15,474
Location:
United Kingdom
Status:
I'm still feeling that <arch> <plat> <minVer> is the way to go, rather than trying to peg it to the kernel version as it is virtually meaningless when dealing with platforms.

Your extra data is all in Elara too (apart from lifecycle start, we don't have that field), it just isn't exposed currently on the SCL API.

mainStreamSupportEndDate --> mainstreamSupportEndDate as mainstream is one word
 Top of the page
CE Geek Page Icon Posted 2020-11-18 3:15 PM
#
Avatar image of CE Geek
Global Moderator
H/PC Oracle

Posts:
12,239
Location:
Southern California
Status:
A lot of CE 2.xx programs will work on both the H/PC and Palm-size PC platforms. That includes many CE 1.0 and CE 2.0 programs. But if a program was specifically written for the first generation of the Palm-size PC, it will usually identify its CE version number as 02 00 01 rather than 02 00 00, so it won't open on a CE 2.0 H/PC.
 Top of the page
Karpour Page Icon Posted 2020-11-18 4:53 PM
#
Avatar image of Karpour
Subscribers
H/PC Philosopher

Posts:
279
Location:
Austria
Status:
Yeah, the problem are always the edge cases

For now my solution is explicitly defining PPC or HPC.

So "2.11 PPC" means minimum version CE2.11, PsPC. While "2.11 HPC PPC" would mean it's compatible with both.

Another thing is Windows Smartphone 2002. As I understand, that's Windows CE 3.0 at it's core. But since those devices had a different resolution/UI than PocketPCs, I guess that is also a platform that needs to be considered?

Also, for PocketPC titles, there were sometimes different binaries for QVGA/VGA, but I'll get to that later
 Top of the page
hpc:factor« View previous thread · Handheld PC General Discussion · View next thread »

Jump to page : 1
Now viewing page 1 [15 messages per page]

Jump to forum:
Seconds to generate: 0.125 - Cached queries : 69 - Executed queries : 8
Server Time now is: Sunday, 24 January 2021 - 12:9