Eu tive uma idéia de usar minha VM do Windows (em um host Ubuntu) para abrir itms: // links (para o iTunes) do host. Então, estou usando o vboxmanage guestcontrol para fazer isso acontecer.
Eu tenho um script (win_vm_launcher.sh) que usa um link como argumento e passa para o host assim:
vboxmanage guestcontrol "$VM" exec --image 'C:\Windows\System32\cmd.exe' --username "$USER" --password "$PASSWORD" -- /c start "$@"
Isso funciona se eu copiar um link do meu navegador e alterar http para itms. Por exemplo, para o link , posso fazer win_vm_launcher.sh itmss://itunes.apple.com/us/album/new-york-city/id3202598
e funciona bem. O álbum abre no iTunes na minha VM.
No entanto, quando eu clico em um link "Visualizar no iTunes" do site do iTunes, ele adiciona um parâmetro extra ao URI (especificamente, o referenciador), então parece algo como itmss: //itunes.apple.com/ us / album / new-york-city / id3202598? ign-msr = https% 3A% 2F% 2Fitunes.apple.com% 2Fus% 2Falbum% 2Corrigir-veio-a-meia-noite-claro% 2Fid578946739
Infelizmente, se eu tentar executar 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
, o prefixo abrirá uma janela comum do Prompt de Comando com o título "itmss: //itunes.apple.com/us/album/new-york-city/id3202598". msr = https% 3A% 2F% 2Fitunes.apple.com% 2Fus% 2Falbum% 2Aposicao-veio-a-meia-noite-claro% 2Fid578946739 ". Eu nem sei como definir o título da janela do prompt de comando, então não tenho certeza de como isso está acontecendo.
Se eu executar o comando no convidado, ele funcionará bem, abrindo o álbum no 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
Eu encontrei um bug do VirtualBox que parece um pouco relacionado, mas não exatamente.
Provavelmente não importa, mas meu host é o Ubuntu 12.04 e meu convidado é o Windows 7.
Então, alguma idéia se o vboxmanage está passando os argumentos incorretamente e, em caso afirmativo, há alguma maneira de contornar isso?
Se eu não conseguir descobrir o jeito certo de fazê-lo, acabarei tendo que processar cada argumento e removendo qualquer parâmetro em qualquer URI.
P.S.
Eu tentei criar um script em lote (out.bat) assim:
echo %1 > %TEMP%/testing.txt
e depois executá-lo do host assim: 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"
Ele foi executado como esperado e, quando eu abro% TEMP% / testing.txt, ele continha:
"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"
incluindo as aspas. Então, meio que passou o parâmetro corretamente (não sei por que ele ainda tinha aspas), então talvez o problema seja o cmd.exe, ou até mesmo o comando start. Estou frustrado.