J'ai eu l'idée d'utiliser ma VM Windows (sur un hôte Ubuntu) pour ouvrir des liens itms:// (pour iTunes) depuis l'hôte. J'utilise donc vboxmanage guestcontrol pour y parvenir.
J'ai un script (win_vm_launcher.sh) qui prend un lien comme argument, et le passe à l'hôte comme ceci :
vboxmanage guestcontrol "$VM" exec --image 'C:\Windows\System32\cmd.exe' --username "$USER" --password "$PASSWORD" -- /c start "$@"
Cela fonctionne si je copie un lien depuis mon navigateur, et que je change http en itms. Par exemple, pour https://itunes.apple.com/us/album/new-york-city/id3202598 Je peux le faire. win_vm_launcher.sh itmss://itunes.apple.com/us/album/new-york-city/id3202598
et cela fonctionne bien. L'album s'ouvre dans iTunes sur ma machine virtuelle.
Cependant, lorsque je clique sur un lien "Afficher dans iTunes" à partir du site iTunes, un paramètre supplémentaire est ajouté à l'URI (en particulier, le référent), de sorte que cela ressemble à itmss://itunes.apple.com/us/album/new-york-city/id3202598?ign-msr=https%3A%2F%2Fitunes.apple.com%2Fus%2Falbum%2Fit-came-upon-midnight-clear%2Fid578946739
Malheureusement, si j'essaie d'exécuter win_vm_launcher.sh itmss://itunes.apple.com/us/album/new-york-city/id3202598?ign-msr=https%3A%2F%2Fitunes.apple.com%2Fus%2Falbum%2Fit-came-upon-midnight-clear%2Fid578946739
il ouvre à la place une fenêtre d'invite de commande normale avec le titre "itmss://itunes.apple.com/us/album/new-york-city/id3202598?ign-msr=https%3A%2F%2Fitunes.apple.com%2Fus%2Falbum%2Fit-came-upon-midnight-clear%2Fid578946739". Je ne sais même pas comment définir le titre de la fenêtre de l'invite de commande, donc je ne sais pas comment cela se produit.
Si j'exécute la commande dans l'invité, cela fonctionne bien, ouvrant l'album dans iTunes :
cmd /c start itmss://itunes.apple.com/us/album/new-york-city/id3202598?ign-msr=https%3A%2F%2Fitunes.apple.com%2Fus%2Falbum%2Fit-came-upon-midnight-clear%2Fid578946739
J'ai trouvé un Bug de VirtualBox qui semble quelque peu lié, mais pas exactement.
Cela n'a probablement aucune importance, mais mon hôte est Ubuntu 12.04, et mon invité est Windows 7.
Savez-vous si vboxmanage ne transmet pas correctement les arguments et, si c'est le cas, existe-t-il un moyen de le contourner ?
Si je ne parviens pas à trouver le bon moyen de le faire, je vais devoir traiter chaque argument et supprimer tous les paramètres des URI.
P.S.
J'ai essayé de créer un lot script (out.bat) comme ceci :
echo %1 > %TEMP%/testing.txt
et ensuite l'exécuter depuis l'hôte comme ceci : vboxmanage guestcontrol "$VM" exec --image 'C:\Windows\System32\cmd.exe' --username "$USER" --password "$PASSWORD" -- /c "C:\path\to\out.bat" "itmss://itunes.apple.com/us/album/new-york-city/id3202598?ign-msr=https%3A%2F%2Fitunes.apple.com%2Fus%2Falbum%2Fit-came-upon-midnight-clear%2Fid578946739"
Il s'est exécuté comme prévu, et lorsque j'ouvre %TEMP%/testing.txt, il contient :
"itmss://itunes.apple.com/us/album/new-york-city/id3202598?ign-msr=https%3A%2F%2Fitunes.apple.com%2Fus%2Falbum%2Fit-came-upon-midnight-clear%2Fid578946739"
y compris les citations. Ainsi, le paramètre est passé correctement (je ne sais pas pourquoi il y avait encore des guillemets), alors peut-être que le problème vient de cmd.exe, ou même de la commande de démarrage. Je suis perplexe.