I find it somewhat depressing that no one uses the Nullsoft Installer and responded with my earlier complaint and said, "No, Tom, there's a better way now."

Resigns self to pouring over docs again. Grudgingly because it seems every time I touch that script, something breaks.

C# is one of the bright spots where Microsoft is concerned.

//

"A screen popped up and said it was from Microsoft and to call them"
Don't call them. It's phishing.
"Well, I called them and they said they were from Microsoft"
Did you expect them to say, "No, this is Chuck. Gimmie your credit card number"? Of course they said they were from Microsoft. What information did you give them?
..silence..

Can I please go home now? Please?

If anyone has used a more recent version of NullSoft's Installer, please tell me they have a more elegant means of comparing results of GetDLLVersion than what I had to use beforeā€¦

Function VersionCompare
        !define VersionCompare `!insertmacro VersionCompareCall`
 
        !macro VersionCompareCall VER1 VER2 RESULT
                Push `${
VER1}`
                Push `${VER2}`
                Call VersionCompare
                Pop ${
RESULT}
        !macroend
 
        Exch $1
        Exch
        Exch $0
        Exch
        Push $2
        Push $3
        Push $4
        Push $5
        Push $6
        Push $7
 
        begin:
        StrCpy $2 -1
        IntOp $2 $2 + 1
        StrCpy $3 $0 1 $2
        StrCmp $3 '' +2
        StrCmp $3 '.' 0 -3
        StrCpy $4 $0 $2
        IntOp $2 $2 + 1
        StrCpy $0 $0 '' $2
 
        StrCpy $2 -1
        IntOp $2 $2 + 1
        StrCpy $3 $1 1 $2
        StrCmp $3 '' +2
        StrCmp $3 '.' 0 -3
        StrCpy $5 $1 $2
        IntOp $2 $2 + 1
        StrCpy $1 $1 '' $2
 
        StrCmp $4$5 '' equal
 
        StrCpy $6 -1
        IntOp $6 $6 + 1
        StrCpy $3 $4 1 $6
        StrCmp $3 '0' -2
        StrCmp $3 '' 0 +2
        StrCpy $4 0
 
        StrCpy $7 -1
        IntOp $7 $7 + 1
        StrCpy $3 $5 1 $7
        StrCmp $3 '0' -2
        StrCmp $3 '' 0 +2
        StrCpy $5 0
 
        StrCmp $4 0 0 +2
        StrCmp $5 0 begin newer2
        StrCmp $5 0 newer1
        IntCmp $6 $7 0 newer1 newer2
 
        StrCpy $4 '1$4'
        StrCpy $5 '1$5'
        IntCmp $4 $5 begin newer2 newer1
 
        equal:
        StrCpy $0 0
        goto end
        newer1:
        StrCpy $0 1
        goto end
        newer2:
        StrCpy $0 2
 
        end:
        Pop $7
        Pop $6
        Pop $5
        Pop $4
        Pop $3
        Pop $2
        Pop $1
        Exch $0
FunctionEnd

That's something, thankfully, I don't have to deal with (Multiple Language support)

//

Some of us were dumb/stubborn enough to rewrite the platform. I share your misgivings about OSX's current course. Windows 10 has made Windows somewhat tolerable but I still grit my teeth when I use it.

//

The phone calls of people sheepishly skirting the issue and never outright asking are priceless.

//

Status: Donning my armor. About to go and slay my nemesis - Monday.

The second I start drinking for anesthetic purposes is the second I stop drinking.

// @kdfrawg

@kdfrawg Let's put it this way. I have control over going to bed. I do not have control over whether or not I lay there wide awake and stare at the ceiling.