The value you put in the variables block is just a default, you can pass a value for the variable when you run the packer build. You can pass values on the command line with the var flag or put them in a file and refer to the file with the var-file flag on the command line.
Then in your template code you use the variable values with the user function {{user `varable`}}, so the line in your template code would be
"Start-Process -FilePath \"C:\\atmp\\vs_enterprise.exe\" -ArgumentList \"--add Microsoft.VisualStudio.Workload.Azure --productKey {{user `key_info`}} --quiet\" -NoNewWindow -Wait"
This is all explained in the documentation here: