Vários ajustes:
- em vez de codificar o caminho para o aplicativo, usei o comando cmd.exe start:
options=(
--username WINDOWSUSER
--exe "%SystemRoot%\system32\cmd.exe"
-- 'cmd' /c start "run this" "$fixedFilePath"
)
onde $ fixedFilePath é como no seu código. Essas opções funcionam mesmo se $ fixedFilePath contiver espaços em branco.
Isso generaliza o script - ele funcionará agora para qualquer tipo de arquivo, não apenas para arquivos do Excel.
Ele também deve funcionar se $ fixedFilePath for um caminho completo para um programa dentro do convidado do Windows; o nome (com extensão) de um programa em% PATH; ou o nome (com extensão) se um programa registado, e. winword.exe, excel.exe.
Eu então testei a string retornada pelo VBoxManage guestcontrol no stderr:
nError=1
nTries=0
while [ $nError -gt 0 ] && [ $nTries -lt 20 ]; do
nError=$(VBoxManage guestcontrol win7_hilti start "${options[@]}" 2>&1 >/dev/null | grep -c "error")
((++nTries))
sleep 2
done
(alguns dos quais eu peguei emprestado de esta fonte )