Available for a limited time only - £10 off a £20 spend at eXpansys! For more details visit this topic!

Please Log In or Register - it's FREE!

2 Pages V   1 2 >  
Reply to this topicStart new topic
 Suggestions
johncody
post Apr 3 2008, 18:05
Post #1


Regular
Group Icon

Group: Posters
Posts: 105
Joined: 12th May 2003
From: New York, NY USA
Member No.: 6,041

Device(s): HTC Dash



Hey Paul,

Congrats on this first release!

A small suggestion...

Since internal memory is limited, when AppToDate becomes a huge success, the "\Application Data\AppToDate" directory will be filling with a bunch of XML and icon files. Also, this directory might not exist on future windows mobile devices.

So, my suggestion is instead of having third party apps be hard-wired to store their XML file in that directory, why not have AppToDate specify the proper directory in a registry key (i.e. "HKLM\Software\Modaco\AppToDate" with a value like "XMLFilepath" that would contain the directory of where an newly installing app should place it's XML file.

This way, if something should change in the future (or the user wishes to install AppToDate and all the XML files on their storage card), the app being installed will simply read this value during install and auto-adjust to such changes.


This post has been edited by johncody: Apr 3 2008, 18:07


--------------------
-John Cody
Go to the top of the page
 
+Quote Post
Paul (MVP)
post Apr 3 2008, 18:28
Post #2


The Main Man
Group Icon

Group: Admin Team
Posts: 19,559
Joined: 6th November 2002
From: Norwich, UK
Member No.: 1

Device(s): HTC Advantage



The problem with that is that the developer then has to put some logic in rather than just chucking a file in a CAB.

What would be better is if in apptodate you had a Main Memory option and a Storage Card option. With the latter selected, each time it ran, AppToDate first moved anything it found in it's internal memory directory to storage card, then proceeded as normal.

Everyone's a winner, and it's something I can add / tweak in a future build with no developer impact.

Good suggestion tho, this is exactly why i'm seeding this early Beta for developers biggrin.gif

P


--------------------
Paul O'Brien - Microsoft MVP, Mobile Devices, MoDaCo.network Founder. Check out my Blog!

£10 off a £20 spend at eXpansys - click for details
Go to the top of the page
 
+Quote Post
johncody
post Apr 3 2008, 18:29
Post #3


Regular
Group Icon

Group: Posters
Posts: 105
Joined: 12th May 2003
From: New York, NY USA
Member No.: 6,041

Device(s): HTC Dash



As an update to my previous post: My suggestion would require the CAB file (of the app being installed) to read that registry value in order to find out where to install the XML file. I know how to setup a CAB file to "set" a value in a registry key, but I don't know off the top of my head how to read a value and have the CAB file install a file into a directory specified by this value.

I think this is easily accomplished using a custom "setup.dll" that the CAB file can run when the app is being installed, but I believe creating a custom setup.dll requires C#/C++, which would preclude me and other VB.NET developers from doing so.

Ideally, a solution that uses a registry key to specify the XML path, and that doesn't preclude VB programmers would be ideal smile.gif


--------------------
-John Cody
Go to the top of the page
 
+Quote Post
Paul (MVP)
post Apr 3 2008, 18:31
Post #4


The Main Man
Group Icon

Group: Admin Team
Posts: 19,559
Joined: 6th November 2002
From: Norwich, UK
Member No.: 1

Device(s): HTC Advantage



See above wink.gif

P


--------------------
Paul O'Brien - Microsoft MVP, Mobile Devices, MoDaCo.network Founder. Check out my Blog!

£10 off a £20 spend at eXpansys - click for details
Go to the top of the page
 
+Quote Post
johncody
post Apr 3 2008, 18:35
Post #5


Regular
Group Icon

Group: Posters
Posts: 105
Joined: 12th May 2003
From: New York, NY USA
Member No.: 6,041

Device(s): HTC Dash



QUOTE(Paul (MVP) @ Apr 3 2008, 13:28) *
The problem with that is that the developer then has to put some logic in rather than just chucking a file in a CAB.

What would be better is if in apptodate you had a Main Memory option and a Storage Card option. With the latter selected, each time it ran, AppToDate first moved anything it found in it's internal memory directory to storage card, then proceeded as normal.

Everyone's a winner, and it's something I can add / tweak in a future build with no developer impact.

Good suggestion tho, this is exactly why i'm seeding this early Beta for developers biggrin.gif

P


Yes - that will work even for us VB'ers - cool smile.gif


--------------------
-John Cody
Go to the top of the page
 
+Quote Post
chucky.egg
post Apr 3 2008, 19:00
Post #6


Did I say that out loud?
Group Icon

Group: News Team
Posts: 4,511
Joined: 20th August 2003
From: Kent, England
Member No.: 13,469

Device(s): Kaiser, Touch



QUOTE
the developer then has to put some logic in rather than just chucking a file in a CAB

Eeeek!

I like chucking a couple of files in a CAB, that way all I need to remember for AppToDate is to change the version number in the XML.

Top app though, I agree that this could be huge for users and developers alike
Go to the top of the page
 
+Quote Post
JohnPsuik
post Apr 3 2008, 23:24
Post #7


Newbie
Group Icon

Group: Posters
Posts: 1
Joined: 9th February 2003
Member No.: 2,722



Hi Paul, some quick feedback, ideas and thoughts:

It's good to see that you will add to it, allowing major version update notification.

Some optional or required fields that you might consider:
  • Release date of new version
  • Ability for other short note (version update notes)
  • OS compatibility. For example v3 is WM5/WM6 compatible, v4 isn't WM5 compatible. I know it's not a extremely common situation.

Thanks!

-John


--------------------
-john

Developer One Mobile Software
www.developerone.com
Go to the top of the page
 
+Quote Post
Paul (MVP)
post Apr 4 2008, 06:07
Post #8


The Main Man
Group Icon

Group: Admin Team
Posts: 19,559
Joined: 6th November 2002
From: Norwich, UK
Member No.: 1

Device(s): HTC Advantage



Hi John!

* Release date of new version
* Ability for other short note (version update notes)

These are both best probably just included in the 'Description' field, particularly if I tweak the UI to make that box a click-to-go-fullscreen option...?

* OS compatibility. For example v3 is WM5/WM6 compatible, v4 isn't WM5 compatible. I know it's not a extremely common situation.

Understood, will bear in mind for a future version!

P


--------------------
Paul O'Brien - Microsoft MVP, Mobile Devices, MoDaCo.network Founder. Check out my Blog!

£10 off a £20 spend at eXpansys - click for details
Go to the top of the page
 
+Quote Post
Chainfire
post Apr 4 2008, 08:25
Post #9


Newbie
Group Icon

Group: Posters
Posts: 22
Joined: 1st October 2007
Member No.: 306,145



Paul,

First off, let me say, great initiative, this could be big if done correctly. Similar efforts in other areas (as in, not for WM/PPC) have been started many times and most of them have ultimately failed (though of course there are some success stories). I truely hope AppToDate will be different.

Now, on to the good stuff.

File location
If I understand correctly, files have to put in that folder whether AppToDate is installed or not. People who do not use AppToDate will probably frown upon this (I know I would). Not to mention it could cause trouble with uninstallation of CABs.

I would personally suggest, indeed, a registry key:
[HKLM\Software\AppToDate\MyApp] REG_SZ [path to xml file]

This is the easiest solution I can see to the problem, aside from AppToDate actually scanning folders to find AppToDate.xml

Ofcourse, any solution forcing a setup DLL usage would be a definite no, as these often prevent installation to complete when no valid (and know to the device) code signing certificate is used on both DLL and CAB on application locked phones.

Version and notification
You mention version and notification options in the XML for use with for example non-free upgrades. To make this work right IMHO you need to have version specifiers in the XML so it knows from which version to which version is free and non-free.

Also possibly a way to select which version you want to install? For example, software may have different version for VGA and QVGA.

---

Here is an example XML showing the above features, with comments.

Installed XML:

CODE
<application>
  <name>My Application</name>
  <version>3.21.3.QVGA</version><!-- only compare numeric parts -->
   <date>March 4, 2008</date>
  <description>My Application Rox teh Sox</description>
  <versionurl>http://www.myapp.com/apptodate/apptodate.xml</versionurl>
  <url>http://www.myapp.com/</url><!-- always nice to know homepage url -->
</application>


Server XML:

CODE
<application>
  <name>My Application</name>
  <description>My Application Rox teh Sox</description>
  <url>http://www.myapp.com/</url>
  <versions>
    <version>
      <number freefrom="3">3.39.ABCD</number> <!-- latest 3.x release -->
      <notfree>http://www.myapp.com/upgrade/</notfree>
      <date>April 1, 2008</date>
      <cab note="QVGA">http://www.myapp.com/download/MyApp-3.39-QVGA.cab</cab>
      <cab note="VGA">http://www.myapp.com/download/MyApp-3.39-VGA.cab</cab>
    </version>
    <version>
       <number freefrom="2">2.83.EFGH</number> <!-- latest 2.x release -->
       <notfree>http://www.myapp.com/upgrade/</notfree>
      <date>January 6, 2008</date>
       <cab note="QVGA">http://www.myapp.com/download/MyApp-2.83-QVGA.cab</cab>
       <cab note="VGA">http://www.myapp.com/download/MyApp-2.83-VGA.cab</cab>
     </version>
   </versions>
</application>


Note that ofcourse the XML you actually install only needs the data for that version, not the other ones. AppToDate should therefor use intelligent XML comparison.

I know somebody is going to read the above and think "well, why not make automatic selection on cab[note] ?". That is because ofcourse QVGA/VGA can be detectable, but "QuickMenu enhancer" could have something silly like "QuickMenu 1.3 compatible" versus "QuickMenu 2.0 compatible". You cannot assume because a user has a certain type installed, they will always want this type.

I'm sure you get the idea. It's up to you to see what to do with it smile.gif

oh, and on a final note: the xml should have an AppToDate XML revision in it, for future compatibility.


This post has been edited by Chainfire: Apr 4 2008, 08:27


--------------------
Author of KaiserTweak and WMWifiRouter
Go to the top of the page
 
+Quote Post
Paul (MVP)
post Apr 4 2008, 08:33
Post #10


The Main Man
Group Icon

Group: Admin Team
Posts: 19,559
Joined: 6th November 2002
From: Norwich, UK
Member No.: 1

Device(s): HTC Advantage



QUOTE(Chainfire @ Apr 4 2008, 09:25) *
File location
If I understand correctly, files have to put in that folder whether AppToDate is installed or not. People who do not use AppToDate will probably frown upon this (I know I would). Not to mention it could cause trouble with uninstallation of CABs.

I would personally suggest, indeed, a registry key:
[HKLM\Software\AppToDate\MyApp] REG_SZ [path to xml file]

This is the easiest solution I can see to the problem, aside from AppToDate actually scanning folders to find AppToDate.xml

Ofcourse, any solution forcing a setup DLL usage would be a definite no, as these often prevent installation to complete when no valid (and know to the device) code signing certificate is used on both DLL and CAB on application locked phones.

Bear in mind how *tiny* these files are. Not just small, tiny! It wouldn't cause problems with uninstallation of CABs, it'd just uninstall the files like any other.

Adding a registry key would be an option, but I really think it's best to keep the developer work as simple as possible to encourage uptake, and what could be simpler than dropping 1 XML file and (optionally) 1 icon in a standard directory. I'll bear it in mind tho, and maybe offer both alternatives in a future build.

Agreed, anything that needs a setup DLL is a no-no.

QUOTE
Version and notification
You mention version and notification options in the XML for use with for example non-free upgrades. To make this work right IMHO you need to have version specifiers in the XML so it knows from which version to which version is free and non-free.

Also possibly a way to select which version you want to install? For example, software may have different version for VGA and QVGA.

You kinda have that already if you think about it. If you are not doing free cross version upgrades, then just call your XML files myappv1.xml and myappv2.xml. Then v1 of myapp will retrieve myappv1.xml, see there are no more free upgrades, and tell the user to go and get the new trial or upgrade. Then that new v2 version will use myappv2.xml and the whole process starts again. Again, as easy as possible!

With regards to VGA / QVGA, I don't think that's needed. If there are 2 different versions of the app, they will just have different XMLs. You don't need any logic, as you're always going to want to update the version you already have installed.

Note that ofcourse the XML you actually install only needs the data for that version, not the other ones. AppToDate should therefor use intelligent XML comparison.

QUOTE
I know somebody is going to read the above and think "well, why not make automatic selection on cab[note] ?". That is because ofcourse QVGA/VGA can be detectable, but "QuickMenu enhancer" could have something silly like "QuickMenu 1.3 compatible" versus "QuickMenu 2.0 compatible". You cannot assume because a user has a certain type installed, they will always want this type.

Not sure what you mean?

QUOTE
oh, and on a final note: the xml should have an AppToDate XML revision in it, for future compatibility.

Definitely not a bad idea, although I always envisage XML files will be backwards compatible!

THANKS FOR YOUR INPUT! biggrin.gif

P


--------------------
Paul O'Brien - Microsoft MVP, Mobile Devices, MoDaCo.network Founder. Check out my Blog!

£10 off a £20 spend at eXpansys - click for details
Go to the top of the page
 
+Quote Post
Chainfire
post Apr 4 2008, 08:56
Post #11


Newbie
Group Icon

Group: Posters
Posts: 22
Joined: 1st October 2007
Member No.: 306,145



QUOTE(Paul (MVP) @ Apr 4 2008, 09:33) *
Bear in mind how *tiny* these files are. Not just small, tiny! It wouldn't cause problems with uninstallation of CABs, it'd just uninstall the files like any other.

...

I'll bear it in mind tho, and maybe offer both alternatives in a future build.


Yes I do agree the files are tiny, but I know users and somebody will complain about that extra directory he doesn't use sooner or later ;)

As for the uninstallation, I have noticed the following:
- You install your CAB
- CAB creates file in non-existant directory (so directory is created)
- You put another file in that directory
- Uninstall CAB
- CAB uninstall cannot remove directory it created
- Unsuccesful uninstall or "uncomplete" uninstall

This has happened to me a couple of times and I was scratching my head as to what the problem was. I do not know if this is WM version specific or if I might just have messed up those CABs (forgot to set a flag somewhere?), it's at least something that should be tested.

QUOTE
You kinda have that already if you think about it. If you are not doing free cross version upgrades, then just call your XML files myappv1.xml and myappv2.xml. Then v1 of myapp will retrieve myappv1.xml, see there are no more free upgrades, and tell the user to go and get the new trial or upgrade. Then that new v2 version will use myappv2.xml and the whole process starts again. Again, as easy as possible!


This certainly looks easy, but you end up with a number of XML files on the server side to keep it working for 'old version' or 'special version' users. IMHO it's always nicer to have stuff like this in a single file. Less chance of developer error ;) But of course this is a personal preference.

QUOTE
With regards to VGA / QVGA, I don't think that's needed. If there are 2 different versions of the app, they will just have different XMLs. You don't need any logic, as you're always going to want to update the version you already have installed.

Not sure what you mean?


This is exactly why I posted this example:
QUOTE
I know somebody is going to read the above and think "well, why not make automatic selection on cab[note] ?". That is because ofcourse QVGA/VGA can be detectable, but "QuickMenu enhancer" could have something silly like "QuickMenu 1.3 compatible" versus "QuickMenu 2.0 compatible". You cannot assume because a user has a certain type installed, they will always want this type.


The version the user wants to update to is not always the same version as they have installed, as the version they want to update to may be dependant on other things on the device, that may change over time. VGA / QVGA is a bad example.

To explain the above example further:

Imagine an application or hack that enhances QuickMenu even further. We call it "QuickMenu enhancer".

Now imagine you update QuickMenu from version 1.3 to version 2.0.

You were running "QuickMenu enhancer 1.0 for QuickMenu 1.x". This is however not the version type you want to update to. The version you want to update to is "QuickMenu enhancer 2.0 for QuickMenu 2.x".

Oh well smile.gif


--------------------
Author of KaiserTweak and WMWifiRouter
Go to the top of the page
 
+Quote Post
Paul (MVP)
post Apr 4 2008, 08:59
Post #12


The Main Man
Group Icon

Group: Admin Team
Posts: 19,559
Joined: 6th November 2002
From: Norwich, UK
Member No.: 1

Device(s): HTC Advantage



OK, I think I see where you're at, i'll ponder wink.gif

BTW, uninstall won't fail if it can't delete a directory it created AFAIK.

P


--------------------
Paul O'Brien - Microsoft MVP, Mobile Devices, MoDaCo.network Founder. Check out my Blog!

£10 off a £20 spend at eXpansys - click for details
Go to the top of the page
 
+Quote Post
Chainfire
post Apr 4 2008, 10:10
Post #13


Newbie
Group Icon

Group: Posters
Posts: 22
Joined: 1st October 2007
Member No.: 306,145



Another request, does AppToDate use a specific User-Agent string? Didn't think of this before but we have direct link protection on our files that needs to be circumvented by AppToDate.


--------------------
Author of KaiserTweak and WMWifiRouter
Go to the top of the page
 
+Quote Post
Paul (MVP)
post Apr 4 2008, 10:11
Post #14


The Main Man
Group Icon

Group: Admin Team
Posts: 19,559
Joined: 6th November 2002
From: Norwich, UK
Member No.: 1

Device(s): HTC Advantage



Ah gotcha, no, it doesn't, but it can do. I'll pencil that in for the next build?

P


--------------------
Paul O'Brien - Microsoft MVP, Mobile Devices, MoDaCo.network Founder. Check out my Blog!

£10 off a £20 spend at eXpansys - click for details
Go to the top of the page
 
+Quote Post
Chainfire
post Apr 4 2008, 10:18
Post #15


Newbie
Group Icon

Group: Posters
Posts: 22
Joined: 1st October 2007
Member No.: 306,145



QUOTE(Paul (MVP) @ Apr 4 2008, 12:11) *
Ah gotcha, no, it doesn't, but it can do. I'll pencil that in for the next build?

P


Sounds good to me!

EDIT: BTW, where do I place the icon and what do I call it? Same as XML but .ico ?
EDIT #2: NVM, found it smile.gif


This post has been edited by Chainfire: Apr 4 2008, 10:25


--------------------
Author of KaiserTweak and WMWifiRouter
Go to the top of the page
 
+Quote Post
johncody
post Apr 4 2008, 13:43
Post #16


Regular
Group Icon

Group: Posters
Posts: 105
Joined: 12th May 2003
From: New York, NY USA
Member No.: 6,041

Device(s): HTC Dash



QUOTE(Chainfire @ Apr 4 2008, 03:25) *
File location
If I understand correctly, files have to put in that folder whether AppToDate is installed or not. People who do not use AppToDate will probably frown upon this (I know I would). Not to mention it could cause trouble with uninstallation of CABs.

I would personally suggest, indeed, a registry key:
[HKLM\Software\AppToDate\MyApp] REG_SZ [path to xml file]


I like that idea - no setup.dll needed, very easy to set a registry value in the registry with a single line in the cab.inf, and AppToDate just needs to Enum that key to find all the xml files.


--------------------
-John Cody
Go to the top of the page
 
+Quote Post
chucky.egg
post Apr 4 2008, 13:50
Post #17


Did I say that out loud?
Group Icon

Group: News Team
Posts: 4,511
Joined: 20th August 2003
From: Kent, England
Member No.: 13,469

Device(s): Kaiser, Touch



Ah, I think I was misunderstanding the suggestion.
I thought the suggestion was that the developers query that key to determine where to put their XML.

Are you proposing that the developer (say, me with Nested Tasks) adds a key under AppToDate?
CODE
HKLM\Software\AppToDate\Nested Tasks

And the value of that key might point to "\Program Files\Nested Tasks\Nested Tasks.xml" ?


That's easy enough, even for me.
TBH either way is very simple, so I have no preference, but querying the registry during installation (unless someone can explain it!) would be beyond me.
Go to the top of the page
 
+Quote Post
johncody
post Apr 4 2008, 14:29
Post #18


Regular
Group Icon

Group: Posters
Posts: 105
Joined: 12th May 2003
From: New York, NY USA
Member No.: 6,041

Device(s): HTC Dash



Some values I think would be helpful to add to the XML file:

1) Similiar to what I previously suggested, have a "FREEFROM" value in the server XML file that is the lowest version the currently availible version is a free update to. Then have a "BUYURL" that points to a mobile-friendly payment page if there is a cost to obtain the latest version (i.e. if the user's version is lower then above "minimum free update" version.) This could be a URL to a FairDeal product page smile.gif

2) A "MOREINFOURL" value to the server xml file that points to a mobile-friendly webpage that the developer maintains for that app. For example, it could be a "What's New" webpage that will list the change history of the app which could help the user determine if they want to install the update or not. And this webpage could easily contain download links for the various CAB revisions, so if a user has version 1.1, but doesn't want to pay for the v2.0, they could still download and install the latest v1.9 bug fix by clicking on it's respective link. This user-selectable version update feature would be kinda difficult to implement in AppToDate.

3) And add a "MISCPOST" and "MISCPOSTURL" values to the server XML file so the developer can display a misc entry in the AppToDate listing to announce something additionally to the current version entry - maybe something like "NEW PRODUCT XYZ" (which the text would be the value of the MISCPOST value), and when the user selects this entry, they will be directed to the MISCPOSTURL mobile-friendly webpage.


This post has been edited by johncody: Apr 4 2008, 14:51


--------------------
-John Cody
Go to the top of the page
 
+Quote Post
Paul (MVP)
post Apr 4 2008, 15:06
Post #19


The Main Man
Group Icon

Group: Admin Team
Posts: 19,559
Joined: 6th November 2002
From: Norwich, UK
Member No.: 1

Device(s): HTC Advantage



IS the key that easy though, bearing in mind when you build your CAB you don't know whether the end user installs to Main Memory or Storage Card!

P


--------------------
Paul O'Brien - Microsoft MVP, Mobile Devices, MoDaCo.network Founder. Check out my Blog!

£10 off a £20 spend at eXpansys - click for details
Go to the top of the page