Tafres, Security, Automatic Updating, and Online Activation

Last night I successfully got both the Tafres Client _and_ Server to a stage where each of them:

– Checks for updates over the web on startup. If one exists, that is a greater version number by it’s logic, it will ask to download. Once the download is finished, it will ask to install. There is an issue with the Client because it asks to "exit" the program. The update logic works best when the program can shut down silently. Will have to do something about that. Anyway, the installer runs and updates.

– Runs a 10 Day Trial. I haven’t yet worked out whether the 10 day trial will always just happen, or whether the user will need to get the activation code online to get the 10 day trial. Never the less, at the moment, both can be done.

– Allows for the the retrieval of an Activation Code (part of the Licensing information needed) over the internet. This is done using Secwin Online Server, and Secwin.

This is very cool. In terms of support, you want these two things in place before going out into the big bad world. I need my product secure. But it needs to be trialled. It also needs to be updated as painlessly as possible. I’m getting there with the current solution, although there will be some tweaking I can already see.

Along with this, using SetupBuilder I now have the process of creating Installs and Updates working pretty well.

– the file structure is <Product Name>\\<Version>\\ … then in that folder, I have both the Install and Update SetupBuilder files. Also, these folders: <source>, <external source>, and the two that are created by the SB files themselves, which store the Install and Update respectively.

– the updated files (of mine) go in <source>.

– any changes to 3rd Party or stock Clarion files (dlls) go in <external source> (these are used for the Update logic).

– Open up the Install file, change the [DEVFOLDER] value in the script section. Obviously, this is giving SB a base folder to work from. Practically, I just change the version number.

– If I’ve added new functionality that requires new DLLs, I run a static scan on my exe(s), done in the top panel of SB. This adds any new dependencies.

– Compile.

– Open the Update file (close the Install). Change the [DEVFOLDER] value.

– If any changes to 3rd-Party or Clarion DLLs, run the "Project->Task Automation->Perform Auto Update Scan .." action, and check the differences between the <external source> folder in the current version folder against the previous version folder. This adds any changed DLLs to the project.

– If any new dependencies have been added, I run a static scan on the exe (as in the Install).

– The main exe will already be in the Application Folder, with a  "patch" moniker. I open the file’s details in SB and change both the source and patch folders (change the Version number) to reflect the new versions.

– Compile the Update. This takes a little while longer than the Install, but not much. A very nice and small (if only changes in the main exe for example) Update exe.

– I then update the XML file in the <TafresClient-Update> folder (SB creates a folder with the same name as the SB file itself to store the builds in) to reflect the new version number.

– Now it’s time for uploading the Update exe and xml files to the ftp site that Safe Update looks at. Done.

– Finally, I upload the Install.

– I’ve kept my Install and Update filenames generic. I started out sticking the version number in them, for visual reference, but too many things would have been harder. Safe Update, Changing more stuff each time in SB. Generic names keeps the process streamlined. It also means there is only one set of files on the server, not one for each version.

Phew. That’s quite a post. I think I need to spend some time doing this with screenies and wotnot. Might be helpful. I’m planning to do a bunch of stuff for the new Clarion site, and these pieces of development functionality will go in as tutorials at some stage. So probably won’t do it again here.

Clarion Dev Thought For The Day

Why can’t we have Update procedures linked to the context of the record in the browse, not the browse (or the file for the browse) itself?

This is relevant in the case (and no doubt more than this) where you have a 1:1 relationship between a ParentFile and many ChildFile’s.

I have a browse of the ParentFile, but I want to update the ChildFile.

Now, in the reality of Clarion (and other programming), we’d just handcode it into the browse.

But a fellow Dictator of Code has been starting out with NTWS (NetTalk Web Server) and we were discussing the particular issues he was facing taking the BigAss ™ database and showing it in NTWS.

The concept, to me, seems so simple. You have a defining context for the record, and based on that context (or condition i suppose, like a case statement) you call (and prime the child 1:1 file record) the particular Update procedure needed.

Interesting .. { pinky in mouth }.

Something New At Microsoft

I don’t normally pimp other stuff. Wait. That’s not right. I DO normally pimp other stuff.

A guy I give a fair bit of reading time too is Scoble. He’s posted about a new project at Microsoft here. It sounds pretty exciting, but I’m a hype-monkey, so go see for yourself.

Course, there’s nothing concrete there, because he’s under some kind of Cone of Silence. Man that was a cool invention, how much fun would it be to have one in your office, and pretend to be the chief and Max.

Personally I’m also excited about the next few months Clarion-wise. Some of my projects are coming to fruition, and one will be completed (according to the milestones which are never wrong). I’ve not had an actual completed project in a fair while. Saying that I realise completed is a hard category to obtain.

Nevertheless, it is an exciting time. There’s a lot, a LOT, of cool stuff happening throughout the dev world, and I hope Clarion will be some of that.

Clarion raised me and I turned out Clarion (I just used this homer quote in a forum, but it’s so good I’ll use it again).

Just Finished My First Can Of DC And It’s Only 8am

Crazy talking. I tell you, sleep is fast becoming my most favourite past-time. There are other things cool, like my recently re-fired Wow-crack-tastic love .. but sleep can provide something those things cannot. A recharge.

Sure, the diet coke coursing through my veins has some good points. It will rot my teeth, my stomach and probably give me some form of cancer.

Wait. Were those the good points?

It has been getting more crazy than usual lately. Last night I switched between working on the big project (a Web System, built with NetTalk, naturally), working through some conversations re the Clarion Tech Evangelist, working on the Podcast (for the new Clarion site, the format of the cast, and some recording), and doing some header image design for my company website.

Plus it was my eldest’s birthday. He was so excited all day, turning 7. Got some cool gear, and we had a fair amount of party food (although wasn’t a big party, just us and one set of g-parents). Little guy knows more about Star Wars now than me (from the Lego game on the Wii).

Bye for now.

It’s Not Over Till ..

Wow. What a few days it’s been.

Crazy stuff.

I’ve taken the role as Tech Evangelist for Clarion, and let me tell you .. it took me less than a week for the enormity, the massive jugganaut-y immense and powerful enormity, of what lies before a Clarion Tech Evangelist to sink in.

It’s a big job.

But so far, despite many ups and downs already (hey, i’m an emotional guy, what can i say) .. it’s great.

Moving on.

Wait. No. I’m done. See you later.

Another Day, Another .. 5 Cents

Almost forgot my desire to get posting most every day.

Things that happened today:

  • Got some nice work done on the Tafres site (local at the moment), didn’t get enough to put it live, hopefully tomorrow night.
  • Almost got a digital certificate installed, finally, so i can fire up SafeUpdate properly.
  • Had an intense morning at work, squashing bugs hand-in-hand with a very tenacious (good) tester.
  • Got absolutely POWNED by my eldest playing Bomb Battles in Mario Kart, Double Dash. He’s just getting better and better. Can’t wait for the day he’s old enough to start playing some rpgs and wotnot with me.
  • Thought about the next Jaymoe build, but got scared because it’s not coming together like I want it. Need to simplify. Break stuff down.
  • Did some cool work on branding Tafres. The two (Server and Client) icons are now very nicely branded. Also, got one of those favicon.gif’s for the website. Should be cool.
  • Another hour on the exercise bike. Really started to hurt towards the end. My posterior was hurting much.
  • Haven’t managed to play any games, but .. now .. thinking .. i’m off :).

What’s Doing

Okay. I’m very trashed. Going to just list a random order of things happening lately.

– played a bit of WoW again, finally. Missed the crack-e-ness.

– played a very tiny bit of the Witcher with the new patch that lessens load times. Made it much more enjoyable. Will have to continue with that.

– movement on the Tech Evangelist role for SV (Clarion).

– decided on a revamp for Pimp My Clarion, as of now going to create it in NetTalk, host it myself.

– got the web server and basic web system functionality into the Freight system.

– almost got the Tafres (Freight System) web site finished and ready to launch. Just need to fill in some of the content.

– working on a new patch for Jaymoe. Still trying to do too much though. Changing the UI. It’s not going to happen easily or quickly. Going to have to work out which way to go.

– a new beta of Dr. Explain came out. Looking forward to getting stuck into the added features.

– actual work is getting pretty convoluted. I took some initiative and started assuming the role of Team Leader for my project. Noone has corrected my assumption yet, although had to deal with some wierdness.

– read some interesting stuff about Ruby on Rails .. 1. here and 2. here. Well, the second link has a more global topic. Warning .. Extreme Language, specially in the Zed rant. But very interesting. It sounds like a complicated mess, with massive egos and guys who don’t know much about programming, and guys who do, all fighting together over important and not-so-important stuff. Which is of course a global and lame statement. Ha ha. If you want to find out about what’s going on in the Rails community .. read Zed’s rant.

– Sword of Shadows (JVJ’s site) came out! Read it asap and loved it. This series is one of my all time favourites. Got one of the most awesome fantasy quotes ever. "Kill an army for me Raif Sevrance. Any less and I might just call you back."

– almost finished watching Heroes Series 1 through again. Just finished "Five Years Gone" last night while exercising.

– Exercising like a maniac on the bike we got as a combined christmas pressie. 30 mins to 1 hour a night, 5-7 nights a week. It’s crazy. But awesome because you can do it in front of the telly. Ahhhh. However, really cuts into .. well .. time.

That’s enough for now. Regular updates will hopefully be more .. regular.