O guestControl do VBoxManage está passando parâmetros incorretamente?

1

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.

    
por Dan Jones 21.11.2012 / 21:30

1 resposta

0

Bem, encontrei uma solução. Eu acho que o problema foi com o cmd.exe, mas não tenho certeza do que, porque eu encontrei uma maneira de fazê-lo funcionar usando o PowerShell.

O script agora lê:

vboxmanage guestcontrol "$VM" exec --image 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe' --username "$USER" --password "$PASSWORD" -- "% {Start-Process $1}"

É claro que essa solução não funcionará para ninguém usando o Windows XP, mas, sério, alguém ainda a está usando (pelo menos em uma VM)?

O único problema é que a janela do PowerShell abre brevemente, mas isso não é grande coisa.

Defino o script como o manipulador padrão para os protocolos itms e itmss, e agora, quando clico em um link "Visualizar no iTunes" no site do iTunes no meu host no Chrome, ele inicia o iTunes no meu convidado do Windows. / p>     

por 22.11.2012 / 05:33