Thoughts on National Anthems in the 21st Century

While I was adding I Am Australian to my list of songs that moved me, I got to thinking about the sentiment by many Australians that it would make a much better anthem than Advance Australia Fair and, in the process, I got to thinking about what would actually make a good national anthem in the 21st century.

Well, what is the purpose of a national anthem to begin with? According to Wikipedia, it’s a patriotic song which “evokes and eulogizes the history, traditions, and struggles of its people”.

In other words, it’s a song which embodies the nature of the nation and evokes a sense of national identity and loyalty.

The problem is that, when I look at national anthems and how they’re used, it feels like they’re products of their time to the point where, in the 21st century, that adherence to tradition is becoming detrimental to their core function.

As a Canadian, I suppose it would be most appropriate for me to break down O Canada, but I don’t have a more effective alternative to contrast it with, and that would really weaken the communicative power of my argument.

Since this post started with “I Am Australian”, let’s look at “Advance Australia Fair”. It’s a beautiful song, but it was written in the latter half of the 19th century (first performed in 1878) and it’s very much a product of its time.

It’s an ode (in the relaxed sense of the word) to the virtues of the nation, written in the characteristic musical style of its time period and meant to be sung with the kind of decorum that was common in high society of the period.

While that’s all well and good, I argue that it has the same flaw as the school systems which we inherited from that time, designed to train factory workers: It inculcates obedience and duty on the promise that “you’ll discover its relevance later” and is incredibly “leaky”. (I don’t have a citation handy, but I remember reading that students tend to retain only about 5% of what they are taught in school and have a problem with sandboxing knowledge, such that they never try to apply teachings from one class to the next class of the day.)

If your primary goal is to teach knowledge, rather than to teach conformity and obedience, experts agree that the most effective approach is to give relevance first, then give knowledge. This is a specific instance of a more general pattern which also comes into play with national anthems.

In short, make people value their nation and true respect will come, rather than commanding the trappings of respect and trying to inculcate it through some pavlovian response.

I’ll come back to that when I get to how anthems are used but, first, I’d like to talk about the content of the anthem.

The Song

One of the our biggest social problems at the beginning of the 21st century is a pathological lack of empathy, which the homophilic effects of social networking sites exacerbate. Anthems traditionally haven’t helped here, because this problem is the remnants of cultural trends which were even stronger in the past. Segregation, apartheid, class warfare, slavery, etc.

While “Advance Australia Fair” certainly salutes the beautiful attributes of the Australian land, with passages such as “with boundless plains to share”, it does nothing to counter the tendency among some to believe that they are worthy of that beauty, but others are not… and why should it? It was written by a white man, born in the British Isles in the 19th century. He was a product of his culture and wrote a song which embodied that.

In fact, it explicitly says that the aforementioned boundless plains are for “those who’ve come across the seas” and speaks of the bounties of the lands as gifts to be used.

Now, let’s compare “I Am Australian”.

Right from the offset, it respectfully and poetically acknowledges the culture of the aboriginal people and their original claim to the land. It then adds to (not replaces) the atmospheric music from that first passage with the more European strumming of a guitar. Before the lyrics can say a thing about it, the instrumental lines are already expressing the hybrid origins of what Australia became. The second passage then speaks from the perspective of Australian settlers: Convicts and farmers. People who worked hard to earn their place in Australia and who became Australian. Again, focusing not on the virtues of the land, or the joys of the cultural identity, but on the relatable, historical reasons that these people have earned their place in the cultural milieu.

It then moves to the daughter of a digger (in context, one who “sought the motherlode”, but also Australian and New Zealand slang for a soldier which carries a connotation of “egalitarian mateship”) and, in a twist of lyrics which can evoke both a personal journey and a metaphor for the nation itself, “the girl became a woman, on the long and dusty road”. Then, as a bridge into the chorus of the song, she is joined by a chorus of voices as they sing together that “I’m a bushy, I’m a battler. I am Australian.”

Taking the song in this direction may also have a less overt benefit: By encouraging people to focus on the aspects of their identity that can never be taken from them, it may make conservatives more open to the unfamiliar.

Finally, we get to the chorus. “We are one… but we are many. And from all the lands on earth we come. We’ll share a dream… and sing with one voice. I am. You are. We are Australian.” Not only is this a powerful thing to encourage a crowd to join in singing, but, again, it focuses on what unites everyone in the nation, be they aborigine, settler’s descendant, or recent immigrant and whether they’re at home or abroad: Having and pursuing a dream for a better future. (Rather than scarce resources which one might want to hoard.)

…but the song’s elegance as a potential anthem doesn’t stop there. I don’t know whether it was an intentional effort to check off each thing an anthem aims to do, but the second verse is focused on extending the “I am …” pattern to various Australian historical figures, including Albert Namatjira (a pioneer in popularizing the art of his disadvantaged minority) and Ned Kelly (A murderous outlaw who became seen as folk hero for opposing the government… which I think is a good choice as, depending on how you look at it, it’s either an inclusion of another folk hero, or an implication that your status as “one of us” is not something decided by the state).

The second half of the second verse finally starts to describe the land itself and I love the sense of priority that implies. Our own struggles, then our history, and then our lands. Of course, this still isn’t Advance Australia Fair. No bland serenade to the gifts given to the Australian people. I’ll quote this entire stanza verbatim:

I’m the hot wind from the desert
I’m the black soil of the plain
I’m the mountains and the valleys
I’m the drought and flooding rains
I am the rock
I am the sky
The rivers when they run
The spirit of this great land
I am Australian

Two things stand out to me about this assessment of the land:

First, it has shifted from the 19th-century Christian view that all around us has been placed here for us to exploit, to a more poetic, more aboriginal perspective that we and the land are part of the same connected whole and that, like doctors, we are duty-bound to preserve its health. (Not a surprise, given that the song was written in the late 1980s when other songs like “We Are The World” were also being written.)

Second, while Advance Australia Fair focuses on the good things, I Am Australian embraces the land for what it is, both good and bad. If the former is teenage infatuation, then the latter is adult love. To quote My Sister’s Keeper by Jodi Picoult, “You don’t love someone because they’re perfect, you love them in spite of the fact that they’re not.”

Finally, the note they end on. Both songs end on a variation of their title… and what message would you want to leave the people of your country with? “Strive” (which is a pretty instinctual thing anyway) or a message of unity and inclusion (which has to be learned, because of our in-group/out-group instincts)?

The Usage

Now, let’s look at how anthems are actually used and how that can help or hinder their purpose.

I didn’t grow up in Australia, but, here in Canada, we were required to stand while our anthem was played over the school’s P.A. system every morning before classes. Judging by what I’ve seen of American and U.K. culture, that seems to be a safe thing to assume as a minimum for mandatory participation… at least for sake of argument.

This is another decision which seems counter-productive to me. If the purpose of your anthem is to engender unity, loyalty, and appreciation for the nation, you want to work with human instincts, not against them.

When I was in school, students (myself included) didn’t really feel much respect. We saw standing for the anthem as a chore to be gotten out of the way. Likewise, the students in charge of announcements tried their best to find various different recordings of O Canada to avoid us getting completely and utterly fed up with it. (Contrast that with the “Stop the Bop” fundraiser they did, where they played the same recording of Hanson’s Mmmbop every morning to annoy people into meeting their fundraising goals.)

In fact, I once read that the reason you hear so many Christian choral pieces in music by composers like Beethoven is that, having heard them every Sunday for their entire lives, the audience would tune out the meaning of the words and focus more on the acoustics of the voices and how they interacted with the music.

Humans like novelty within our comfort zones. That’s why we love fireworks on national holidays and going out to special events. We also like to be engaged. That’s why you see things such as bands encouraging concert-goers to take a turn singing the chorus of a song.

…so, if the goal is no longer to inculcate human robots to obediently work in factories and fight wars for the privileged classes, why in the heck are you forcing people to merely tolerate their national anthem, when singing along to it should be a treat, like fireworks on the day your country was founded or a half-time show at a football game?

(And who knows. Maybe singing a song with lines like “We are [insert country name]” before a team sport might tweak the audience’s mindset enough to measurably reduce the chances of fans rioting afterward.)

Posted in Web Wandering & Opinion | Leave a comment

Relaxing My Schedule For Fanfiction

My apologies to readers, but I’m going to have to stop releasing a review every week.

Things I want to do more have been piling up over the last couple of months and re-reading fics I know to meet my standards for this blog is starting to feel like a real chore when it takes up leisure time I’d rather spend…

  • Catching up to all of the professional-quality print sci-fi and fantasy that has accumulated on my TODO list while I was hooked on fanfiction.
  • Playing various computer and console games that I wanted as a kid but never owned.
  • Reading various non-fiction books.
  • Programming useful utilities, such as a free alternative to Scrivener and a DOS installer builder for retro-hobbyists.
  • Reading new fanfics that may or may not be worth reviewing here when I’m too tired to feel like taking notes.

I do still have fics on my “to review” list, and I’ll also try to review the print novels I read, but getting back into reviews began as just polishing up notes I was taking for my own reference, and and obligating myself to do it (especially on a schedule) has been draining the enjoyment out of my leisure time.

That said, I do have a Harry Potter review about half done right now, so I’ll try to get that done before I move on to reading something else.

Posted in Fanfiction | Leave a comment

Fanfiction – Cheaters Prosper

Well, it’s been a very busy week and my reading schedule slipped a little too much, so I had to just dig something up quickly.

Cheaters Prosper by drakensis

This is another fun little comedy oneshot which asks a simple question: What might happen if Uzumaki Naruto took the idea to heart that to be a good ninja is to cheat.

I don’t want to spoil things too much, so I’ll just give one amusing little sampling of the phrasing and secondary humour:

“One of the genin has demonstrated a creative, if not technically illegal, perspective on the rules,” the Hokage explained. “It’s certainly a good sign that he’s ready to be promoted, but not the sort of thing to share with outsiders. However, with all these guards, I’m sure that nothing will go wrong. If anyone so much as tries to form a genjutsu my ANBU will be onto them in an instant. And as for sneaking in under a henge… no, nothing like that will be permitted.”

“How reassuring,” Orochimaru said, although the words tasted like ashes in his mouth as he started making covert ‘abort’ signals to Kabuto and his other minions.

I’d say it’s a good 4.5 out of 5. It’s got some clever ideas, and some amusing lines… but there’s still room for improvement.

Posted in Fanfiction | Leave a comment

Fanfiction – Transcendant Humanity

OK, back to Mass Effect fanfiction.

Transcendant Humanity by Solaris242

One of the things I really enjoy is first-contact scenarios, because they have so much potential for interesting explorations of the societies involved… especially if one or both of the species have never met anything like each other before. After all, if you want “reaction to the unexpected”, first contact is hard to top.

The problem is that, if you check a list like the Alternate First Contact War C2 on Fanfiction.net, you’ll find that far too many of them are focused on either the on-the-ground experiences of the soldiers, or how a different humanity can curb-stomp the Turians. (Not that it’s surprising. Writing a really good contact fic requires out-of-the-box thinking that school tends not to teach, and Mass Effect is a mainstream fandom.)

Obviously, you can do nuance and subterfuge, but that’s a fic for another review. Transcendant Humanity is more of a Humanity, F*k Yeah! story, done well.

The basic premise is that, instead of leaving behind eezo, the Protheans left behind only a warning… leaving humanity without FTL travel and united in their fear of a cryptic, genocidal force from out among the stars. Instead of expanding outward, humanity turned to transhumanism.

Now, this is where canon timelines get fudged a bit, but definitely for the good of the story.

Without eezo, and with humanity turning our effort and our intellect toward dealing with ever-increasing population density and a long-term plan to fortify Sol, Charon spends two millennia ignored as too uninteresting for mining purposes and another decade as the subject of study by a humanity that still remembers to “Trust not the Gates”.

When a means is developed to send exploratory ships without using eezo, they wind up on the wrong side of a Turian patrol fleet and the first chapter ends on one of the most distinctive cliffhangers I’ve ever read:

The Turians expected a young race, just reaching the stars. They feared that humanity was another potential Krogan, or Rachni. Upon exiting the Sol Gate, their entire fleet is frozen by the sight before them.

Thousands of ships that the Turians had believed to be ‘dreadnoughts’. Tens of thousands of frigates. A hundred true dreadnoughts, and dozens of super-carriers almost ten kilometres across; spawning truly uncountable swarms of fighters and drones.

And behind the defensive fleet, the true power of humanity. An occluded star, a supercomputer larger than worlds, filled with a trillion minds. Transcendent Humanity speaks as one, the force of their voice ripping through firewalls, absorbing language and codex, booming from every device capable aboard the Turian ships.

This is Sol, the home of humanity. YOU ARE NOT WELCOME HERE.

Now, admittedly, the first chapter is an exposition dump. A reasonably good example of one and having one for the first chapter (or even just a point-form timeline) is a tradition in these sorts of fics, but it’s an exposition dump nonetheless.

Chapter 2 puts the story into a narrative that’s much more normal, accounting for the context of a humanity who consider bodies optional.

It’s the kind of story where it’s difficult for me to give much detail on the plot, because the plot is merely a framework tying together creative and novel scenes. I’ve seen first contact done a million times before. What makes this story work is the fresh world and interesting character experiences that it brings to the table.

The moment I find most memorable is probably when the “Ghosts” (bodiless human infiltrators) who make their way into the Citadel’s systems wind up bringing home an ambassadorial cluster of Geth runtimes, who are struck dumb by the experience of downloading into a “home body” and then experiencing the taste of food.

It’s also an amusingly nostalgic reminder of the early days of the Internet when one of them, making an observation about the Citadel network, comments that “This place is like 75% Asari porn.”

At the same time, it’s refreshing to see a story where, unlike so many Alternate First Contact War fics, the Shanxi assault is averted entirely and it’s satisfying to see a story where humanity is a walking middle finger to the concept of circumscribing and outlawing A.I.

On the character side, there’s one scene which truly captures what makes this story so special. During the initial meetings on the Citadel, a more likeable Donnel Udina visits a café, where, as the first organic human to ever set foot in Council space, he has a conversation with the proprietress… another kind of first contact and an elegant way to insert fresh new content into events I’ve read countless times over.

It’s the use of that imaginativeness on scales both large and small which makes the story what it is. (Wait until you see how they get a cyber-attack into a fleet that’s prepared for it and the crafty solution they come up with for outwitting the Treaty of Farixen.)

Unfortunately, the story stands incomplete at 40,604 words and the update pattern suggests it’s unlikely to be finished, but I’m glad to have what we got. (Not to mention, the author also started another fic, in which the Turians’ first contact with humanity is as survivors of Sol having being consumed by a black hole… though that has made even less progress through its story arc.)

All in all, there’s no other Mass Effect fic quite like Transcendant Humanity and, when I think about it, that’s kind of sad. It’s not wonderously well-written and it’s not a particularly novel concept (I’d give it a 4.5 out of 5). What makes it special is that it manages to evoke some wisp of that era when the space program had sparked a curiosity in the world and the sci-fi new releases didn’t feel so glutted with thrillers, dystopic projections of corporate overreach, and other aspirants to movie adaptation… and isn’t that what an alternate history story should aspire to do?

Posted in Fanfiction | Leave a comment

Fanfiction – Magical Mystery Oops

Well, the last fic I covered reminded me of another MLP fic I wanted to re-read. This one is also a “Twilight Sparkle becomes something” fic (this time, a draconequus), it’s also good and memorable, and, if Ascend had a decent grasp of referential comedy, this one is brilliant at it.

Magical Mystery Oops by BookeCypher

The story is set after the Tirek incident and we’re brought in just as Twilight Sparkle is about to attempt another first: Leveraging her access to consult with Discord, she will attempt to be the first pony to ever make use of chaos magic.

The first time she did something so unprecedented, she earned a pair of wings. This time, things go… well… chaotic and, when she comes to, she finds that she’s been transformed into a draconequus. (Though, not being on a level equivalent to Celestia and Luna, she lacks Discord’s “fashionable asymmetry”.)

Almost immediately, we get to see a solid impression that this is an author who knows how to write interactions between Twilight and Discord which feel both natural for the two of them and, at the same time, very engaging.

When Twilight’s friends show up, we also get to see the first example of the elegant way in which Discord is used to make referential humour feel natural: His initial summation of what went wrong is “She ate an energy field larger than her head.” (Hyperlink mine.)

It feels natural for Discord to say it, it’s amusing even without the reference, and you wouldn’t know it’s a reference at all if you were unaware of what’s being referenced. The story does this again and again, but never too often, so it becomes a fun game of “spot the reference” with the one canon character more suited to making them than Pinkie Pie.

(Another such example would be when Twilight’s first trip through town prompts Mayor Mare to unknowingly quote Ray from Ghostbusters.)

Continuing with the plot, it’s quickly revealed that:

  1. Twilight can’t use her old pony magic while she’s a draconequus.
  2. She got turned into a draconequus because chaos magic has a different conception of “easiest way to accomplish a task” such as “controlling chaos magic”.
  3. If she wants to change back, she’ll have to figure out how to do it herself, because her new innate abilities will counteract any attempt Discord might make.

At first, she refuses Discord’s offer to give her some training, but he gets his foot in the door when his parting comment of “nudge it, don’t force it” proves to be the key detail that allows even the tiniest bit of progress on her own.

That also touches on two other things that make the story so good:

First, the amount of detail that BookeCypher put into how Twilight perceives chaos magic and how it actually achieves its effects on the world around her.

I could spend all day just reading about this, purely based on the (quantum) mechanics… let alone the fun that emerges from Discord being Discord during Twilight’s chaos magic lessons:

“Wouldn’t transfiguration be easier then reversing gravity?” Twilight asked.

“Reversing gravity just means you make the apple do what it wants to do anyway.” Discord waved a finger and a few of the apples started dancing in the air around him. “Transfiguring means making it into something it isn’t. Apples don’t like that.” He paused before adding “Neither do the bunnies, now that I think about it.”

I also love the world-building related to that, such as the nature of Poison Joke and why it smells heavenly to draconequines yet causes no end of trouble for ponies.

Second, and more significantly, the overall interaction between Twilight and Discord as the story unfolds.

This is a romantic comedy… and it works! Twilight and Discord grow together little by little, because circumstance leads them to do and say perfectly plausible things, which cause them to slowly see each other in a new light. Likewise, they snark at each other, but there’s no malice in it. They get on each other’s nerves, and they make mistakes, but and they get past them… and, through it all, they grow and change as characters without losing the essence of what makes them who they are.

Far too many stories are written by impatient authors, but this one isn’t.

It also works beautifully because of how it makes the readers see them in a new light. For example, there’s one scene where Twilight does something perfectly plausible for her canon personality, but the way it’s presented makes you realize that, were it not for her upbringing, she could easily be a mad scientist sort of villain.

The end result is charming, funny, and all the other adjectives that a good romantic comedy should have… yet, at the same time, has a depth to the conception of how chaos magic actually works that helps to make it feel satisfyingly balanced.

…and the delightful characterizations aren’t limited to just Twilight and Discord, as this quote demonstrates:

Luna cut her off as she gestured at Twilight with one hoof. “You mean to tell me that this adorable creature is of the same ilk as that scruffy looking fellow Discord?”

“Who’s scruffy looking!?” Came a shout from one of the windows above them

There is one arc where the tone gets more serious temporarily and the references feel a bit discordant with the narrative tone there (ignore the pun. It detracts from what I’m trying to communicate.), but the rest is good enough that I can’t count it against the story’s overall rating.

The illustration of Draconequus Twilight used for the cover is also beautiful and really helps to get one into the story.

Definitely a 5 out of 5. As of this writing, it stands incomplete at 99,272 words and is still receiving infrequent updates.

Posted in Fanfiction | Leave a comment

Music – Instrumental MLP Fan-songs

Sorry for not having a fanfic review ready today. Not only was my week a mess, a programming project consumed all of the leisure time I’d normally use for re-reading an old favourite fanfic.

Instead, I decided to spotlight some instrumental music which came out of the My Little Pony fandom that I really enjoyed and didn’t want to risk losing track of if something ever happens to my backups.

…because, after all, if the music has no lyrics, it doesn’t matter what you think of the fandom as long as it’s good.

Why Am I Pinkie Pie (download) by DnBeanie
Inspired by a fanfic of the same name by Hoopy McGee, this is a bouncy instrumental EDM pop song that I just keep coming back to.
On a more intellectual note, what draws my attention is how it uses its simplicity. From when the beat starts up to the last 15 seconds, the entire song runs off the same regular, fast paced beat and it’s not technically complex. Basically, a beat, an accompaniment line, and a melody line. Likewise, before the melody comes in, the accompaniment manages to feel anticipatory, simply by the progression it uses and its unbroken nature.
As for the main melody, it’s bouncy like Pinkie Pie, but has a more serious air to it which I’m assuming is intended to follow the nature of the story, where a human wakes up as Pinkie Pie and doesn’t know how it happened or why.
Friendship is Magic (Orchestral Arrangement) (tindeck) by Evening Star
When I want something catchy, with a majestic feel to it, yet which isn’t “on” all the time like Sogno di Volare, this is what I turn to.
It makes me think of reading an epic. At first, the music is soft and light, like a morning sunrise in a small village. Then, it picks up and adds a sense of adventure as the heroes set off on their quest. The music then flows back and forth between the swelling, impressive passages which make the world sit up and listen, and the soft, light explorations of the heroes’ character, without which the story simply wouldn’t work.
Octavia (bandcamp) by Evening Star
Like the previous example, this track (named after a background character who plays the cello) flows back and forth between the personal and the worldly, but this leans more to the personal side.
If that was an epic “tale of a world”, like Lord of the Rings, then this is the personal study of a character whose life has been marked by “forays into the wider world”.
WoodenOverture by Tsyolin
This eight and a half minute track is an orchestral medley of four excellent songs (originally with lyrics) by WoodenToaster. While the originals have more of an electronica element, this version uses excellent samples of classical instruments and I love each on its own merits.
I recommend this both on its own merits and as a sampler of some of the catchier melodies I’ve encountered in MLP songs. Also, if you like this, you might want to try StormWolf’s orchestral cover of Nightmare Night.
Diffraction (soundcloud) by StormWolf
Now back to the more modern genres for a bit. This is a frenetic europop track that does incorporate some vocal samples, but not in any way you’d be able to distinguish from other examples of the genre. Appropriately, it was StormWolf’s contribution to an album themed around the speediest character in the series.
While it’s catchy on its own, I have a soft spot for europop and trance songs which make good use of the piano, with other ones I love including DHT’s techno mix of Listen To Your Heart, the intros to Drift Away (Sven-R-G vs. Bass-T) and Because The Night (Cascada), and the piano accents in Reaching the Sky by Atomix and Vamos A La Playa (Dan Winter Edit) by Loona.
Lesson Learnt by StormWolf
This is another frenetic pop piece and the reason I mention this one is that it reminds many people of the Touhou games. (Here’s the Phantasm Stage from Perfect Cherry Blossom for comparison.)
This particular song in inspired by an incident when the occasionally neurotic main character blows a situation way out of proportion and goes a bit nuts as a result.
Nightmare Night 8 Bit Style by Lukspups
While I’m on the topic of of songs which evoke feelings of games, I should also mention this cover of WoodenToaster’s Nightmare Night.
Aside from enjoying the sound of it, I just have a certain fondness for music which sounds like it could have come from a Castlevania game… in this case, the main melody tracks where tracks which sound sound like the might have originated in a Castlevania game.
(Filmore from Actraiser is one that has that effect even more strongly. I’m one of many who misattribute it to Castlevania if it’s been too many years since last seeing the track metadata.)
Gypsy Bard (Full Orchestral Instrumental) by BassBeastJD
I’ll close this list out with a song I’ve already mentioned in passing.
The original version of this song is from a fan-made edit of MLP sort of like an Abridged Series, in which the lyrics give the impression that the singer is putting on a mask of cheerfulness because it’s the only thing that keeps her from crumbling under the weight of her life’s tragedies. All the while, the tune is unfailingly bouncy and cheerful.
This version varies the pacing and styling quite a bit in an attempt to make up for the lack of lyrics by moving some of that weight and gravitas into the melody.
The use of ambient sounds in the beginning to allude to the events in the lyrics is a nice touch, I enjoy the song, and I’d certainly recommend it to others.
Posted in Music | Leave a comment

Free Installer Creators for All Eras

Since my list of installer-construction resources has grown so huge, I thought I’d move it out of my list of DOS/Win16 programming resources into its own post. After all, it extends all the way up to the modern era and it was sort of taking over.

I’ve cleaned it up a bit and I also added a mention of NSIS version 1.x, which is still available if you want to replicate the old “WinAMP Installer” feel.

The Resources:

HJ-Install
A freeware installer builder for Win32 that’s been around long enough to be on one of my 1998 shovelware compilations.
It’s free for commercial use, but I’d try an appropriate version of InnoSetup or NSIS first. HJ-Install’s 138KiB base overhead is two to four times theirs and they’re more featureful.
Info-ZIP
The open-source DOS self-extractor stub and Zip-modification tools you’ll need to build your own free-for-commercial-use self-extracting archives for DOS.
InnoSetup 1.2.16
The last release of InnoSetup which can target Windows 3.1. Open-source, but requires Borland Delphi 1.x to build.
InnoSetup 2.0.19
The last release of InnoSetup which supports WizardStyle=classic. Open-source, but requires Borland Delphi 2.x (and nothing newer) to build.
InnoSetup 5.4.3 (non-unicode version)
The last release of InnoSetup which can target Windows 9x. Starting with version 4.x, InnoSetup supports Pascal scripting for full customization. Open-source but requires Borland Delphi to build. (Delphi 2.x-5.x or 2009, if the requirements are the same as the latest release.)
Microsoft Setup Toolkit 2.0 (also locally mirrored, originally from conradshome.com).
According to the included LEGAL.TXT, the 2.0 version of the installer bundled with early releases of the Windows 3.1 SDK is effectively freeware. (Just don’t sell it without combining it with “another software product which adds substantial value”.)
NSIS 3.x
The Nullsoft Scriptable Install System. As long as you don’t use the Unicode true directive, it supports Win32 targets all the way back to Windows 95. (According to the features list and the changelog for the most recent minor version as of this writing, which is 3.02). Open-source.
NSIS 1.98
Use this open-source tool if you want the distinctive “WinAMP installer” look. Open-source, but I’m not sure where the source is.
Open Watcom C/C++‘s installer
If you don’t mind your installer stub being under a “publish the source, even for private uses” license and having to figure out how to build it yourself, OpenWatcom C/C++ has a nifty, powerful, single-file installer which runs off a .inf file and can target DPMI-extended DOS, Win32, and, assuming it hasn’t bit-rotted, Win16 via Win386 (Watcom’s 32-bit extender).
V8Power
The DOS utility similar to dialog which FreeDOS uses to build their CD installer out of batch files. Open-source.

Tips:

  • Different major versions of InnoSetup can be installed on the same machine without stepping on each others’ toes.
  • While UnZipSFX from Info-Zip can be compiled to support a post-extraction command, doing so disables support for extracting to locations other than the current working directory.
  • NSIS 3.x can be used for cross-building Windows installers from Debian-family Linux systems (eg. Ubuntu) via the nsis package.

…for Info-ZIP Self-Extractors:

  • Before installer builders started to support single-file output natively, a common solution for downloadable installers was to wrap their output in a self-extracting PKZIP or WinZIP archive, but no “free for commercial use” option I’ve found supports automatically unpacking to a temporary folder, running an installer, and then cleaning up when it exits.
  • Info-ZIP and ARJ both offer fully open-source ways to produce self-extracting archives for DOS, but, according to Maximum Compression, ARJ loses out to a good Zip compressor and, from what I remember, the only significant advantage it held over Zip back in the day was that PKZip’s support for split archives was a mess.
  • Info-ZIP lets you build DOS self-extractors from other platforms. Just grab the UnZipSFX stub from a DOS copy of Info-ZIP, concatenate the Zip file onto the end of it, and then run zip -A using your native copy of InfoZip to fix up the offsets in the Zip file.
  • You don’t strictly need to fix up offsets to make the UnZipSFX stub work… it just keeps it from complaining and ensures that you retain compatibility with external extractors like PKUNZIP.EXE which aren’t smart enough to compensate for offsets rendered invalid by prepended garbage.
  • Shareware distributors who had enough money to pay for an archive tool, but lacked the money to buy an install builder or the skill to write one would use a self-extracting archive with custom banner text.
  • You can customize the second line and beyond of the UnZipSFX banner text by setting an archive comment. Info-ZIP supports editing archive comments while I couldn’t find a way to do so using p7zip.
  • The zipnote command for editing archive comments is very picky about its input data.
  • Zip compression can be optimized by either generating the Zip file using 7-zip/p7zip or recompressing it using advzip from AdvanceCOMP. However, advzip will strip the comment if you set it before optimizing the compression.
  • While some FreeDOS versions of 7-zip include a DOS self-extractor stub, you don’t want it because it requires an external DPMI host.

My Recommendations:

Target OS Desired Experience Installer to Use
Anything .msi WiX
Windows 2000+ 64-bit era InstallShield NSIS with ExperienceUI or UltraModernUI
Win2K/XP era NSIS with Modern UI [1]
InnoSetup
Windows 95+ Win2K/XP era NSIS with ModernUI [1]
Late Win9x era NSIS with InstallSpiderUI [2][3]
Early Win9x era InnoSetup 2.0.19 with WizardStyle=classic [4]
Borrow Open Watcom C/C++’s installer
Windows 3.1x Single EXE or split archive InnoSetup 1.2.16
Open Watcom C/C++’s installer may be usable like this. [5]
Can replace system files
MS Setup 2.0 [6]
DOS Only suits EXE Downloads Use Info-ZIP‘s self-extractor [7]
Good for EXE Download or CD Image Borrow Open Watcom C/C++’s installer
Wait until I have time to write my planned installer kit.
Only suits CD Images Write an INSTALL.BAT using V8Power [8][9]
Suitable for Floppy Images Use Info-ZIP‘s self-extractor [7][10]

Footnotes:

  1. Included with NSIS
  2. CAUTION: I wouldn’t use InstallSpiderUI without first substituting replacement icons and wizard sidebars. The default sidebar art says “Powered by NSIS” at the bottom and I’m skeptical that the author created such a convincing knock-off of unInstallShield’s distinctive sidebar art rather than just yanking every bit of art he used from a copy of InstallShield.
  3. So far, I have only tested InstallSpiderUI on Windows 98 SE and am suggesting it for Win9x based on the fact that NSIS itself still supports Windows 95. Do your own testing!. Also, in my tests, SimpleBg silently refused to activate on a real Windows 98 SE machine, so this can’t be used to replicate early Win9x-era stuff.
  4. I haven’t found a way to achieve maximum authenticity by disabling the confirmation prompt InnoSetup displays before progressing to the screen-filling gradient background. If I find time, I may examine the source code to get a definitive answer.
  5. The source repository for Open Watcom C/C++ suggests that it should be possible to compile a version of the installer GUI for Watcom’s Win386 extender for Win16, but I haven’t tried it. That code may have bit-rotted.
  6. Microsoft’s “MS Setup” cannot bundle all of your files into a single archive, but explicitly supports installing off multi-floppy sets in resource-constrained contexts and, judging by the documentation, has much more comprehensive support than InnoSetup for performing installs which must restart Windows 3.1x to replace system components.
  7. The self-extractor stub from real-mode DOS versions of Info-ZIP can be added to a Zip file using a native build of Info-ZIP. Here’s how you’d build an un-split self-extractor on a POSIXy OS like Linux:
    #!/bin/bash
    NAME="testapp2"
    SFX_STUB="infozip/UNZIPSFX.EXE"
    FILES="testapp"
    ENDFILES="SETUP.EXE README.1ST"
    BANNER="Test Application v2.01
    By: Foobar Software
    
    Synopsis and/or company slogan here
    
    "
    
    # -- Configuration Ends --
    
    # Ensure relative paths are relative to this script
    cd "$(dirname "$(readlink -f "$0")")"
    
    ZIPNAME="$NAME".zip
    EXENAME="$NAME".exe
    
    # shellcheck disable=SC2086
    zip -rT9 "$ZIPNAME" $FILES $ENDFILES -z <<< "$BANNER"
    
    cat "$SFX_STUB" "$ZIPNAME" > "$EXENAME"
    zip -A "$EXENAME"
    rm "$ZIPNAME"

    Note that I’ve added two newlines to the end of the banner and taken advantage of the fact that files will be decompressed in the order they were added to the file to make SETUP.EXE and README.1ST the last two file names which the extractor will print to the screen before it exits. (At some point in the future, I might make a proper reader/writer abstraction for zipnote dumps so it’s possible to reliably combine custom banner text with advzip -z4)

  8. Without the need to worry about the awkwardness of manually unpacking, running the installer, and then deleting the unpacked temporary files, you’ve got a lot more freedom.Do as FreeDOS does. Put the pieces of V8Power which are relevant to your needs into a folder and call them from INSTALL.BAT or INSTALL.EXE to make a fancy, professional-looking install wizard. (Run the included demos and examples inside DOSBox to get an idea for which effects are portable and how to accomplish them.)
  9. If you still feel the need to compress the files to be installed, rather than distributing the whole ISO inside some more modern kind of compression like 7-zip, the UnZipSFX stub allows your frontend to specify a destination directory using the -d switch starting with version 5.5.
  10. Info-ZIP’s zipsplit tool doesn’t require you to swap floppies to make a multi-volume set the way PKZip did. The -r option will allow you to leave a specified amount of room on the first disk for your installer frontend. However, not having all the V8Power bits remain resident in memory means that you’ll either need to do all of your configuration prompting before you turn the job over to the Zip extractor or, alternatively, build your own GUI.

If I can find the time to finish it, I’ve started experimenting with using Free Pascal to write a DOS analogue to InnoSetup or NSIS which functions as a scriptable Zip self-extractor stub. (Though, unfortunately, it won’t be suitable for floppy sets (at least in v1.0) because of how much storage overhead I’m incurring from depending on DPMI, unzip code not intended to be an SFX stub, and Turbo Vision.)

Given that my goal is to use this sort of thing for nostalgic retrocomputing, I may even use the copy of Delphi 1.x on my Borland Delphi 2.x CD to to write a fork of 16-bit InnoSetup that can better mimic other nostalgic Win16 installers. though I’ll probably wait and see if the Win16 efforts by the Free Pascal crew reach a point where I wouldn’t be sharing new source that depends on a proprietary compiler.

Posted in Geek Stuff | Leave a comment