But if you use the Migrate option, doesn't it convert it to HD format? or the existing keys will still be non-HD derived so you would still need to manually import each existing public key?
Both are true.
It'll set an HD key to be used for its new active HD descriptors (
for your new addresses).
And the previous loose keys are converted to single-key descriptors like:
pkh(WIF) or
combo(WIF).
Of course, the new HD parent descriptors can't be related to your old non-HD keys.
If you're interested on an alternative, there's a way to skip that:
Copy an updated blockchain to the offline machine, reindex your offline Bitcoin Core, rescan for txns, then create, sign & export the transaction to the online node.
To do that, simply copy your
own online Bitcoin Node's "
blocks" folder (
you may exclude the "index" folder inside) to an external drive and paste it to the offline machine's node's datadir.
Then start your offline Node with
--reindex and it'll create its own index and chainstate directories. (
this will take hours to finish, but it will not fully sync since it's offline).
With an updated blockchain, even offline, you can load and rescan (
up to the last available block) your wallet and create a transaction there. (
manually set the fee)
Just export it to the online machine once it's signed to be broadcasted.
After you spent the bitcoins from the old wallet, create a new wallet so that you can set-up a normal cold-storage setup.