デスクトップLinuxのファイル形式をVirtualBoxを介して実行されるWindows 7アプリケーションに関連付けて、シームレスに動作し、必要に応じてVirtualBoxを起動するにはどうすればよいですか?
私はKDEを使用しています。
現在のアプローチ
(Excelファイルの例):
スタートメニューに「Excel」という新しい項目を追加します。
- 注文する:/home/USER/bin/excelstarter.sh %f
- 下記をご覧ください
- 開始フィードバックが有効でないため無効になっています。
右クリックし、[次のアカウントで実行]を選択して.xlsxファイルをExcelに関連付けます。
- すべてのファイル形式へのアプリケーション接続を覚えています...
VirtualBoxに関連フォルダをマウントする
VirtualBoxメインウィンドウ>コンピュータ設定>共有フォルダ:
- 次に追加:
- フォルダパス:/data
- 自動インストール
- 永久的な
- 次に追加:
- フォルダパス:/home/USER
- 自動インストール
- 永久的な
- 次に追加:
空のパスワードのグループポリシー制限を無効にする
この変更がないと、VirtualBox はパスワードが設定されていないとコマンドを実行しません。
- gpedit.mscの実行
航海
コンピュータの構成\ Windows設定\セキュリティ設定\ローカルポリシー\セキュリティオプション
変化
コンソールログインに空のパスワードのみを使用するようにローカルアカウントを制限します。 到着障害のある。
excelstarter.sh
ここで考えるのは、このファイルがまだ実行されていない場合は、VirtualBoxを起動して起動するのを待ってから、VirtualBoxの対応するインストールセットに変換されたファイルパスを使用してExcelを起動することです。
# Start VM (if it is already started this does nothing)
VBoxManage startvm "win7_hilti"
# Replace folders with windows-local versions (mounts need to be setup)
# /data/ is mounted as F:
original=$1
findWhat=\/data/
replaceWith="F:\\"
fixedFilePath="${original/$findWhat/$replaceWith}"
# /home/USER/ is mounted as G:
original=$fixedFilePath
findWhat=\/home\/USER/
replaceWith="G:\\"
fixedFilePath="${original/$findWhat/$replaceWith}"
# Used for debugging the file paths
#notify-send $fixedFilePath
# Start Excel
# Try to run it until it the machine has started
until VBoxManage guestcontrol "VM-NAME" start --exe "C:\\Program Files\\Microsoft Office\\Office14\\EXCEL.EXE" --username WINDOWSUSER "excel" -- "$fixedFilePath"
do
# Sleep 1 gave the problem that the mounts were not yet ready, sleep 2 seems to work fine
sleep 2
done
質問
- VirtualBoxがすでにバックグラウンドで実行されている場合は、フォーカスを受け取りません。
- VirtualBoxが起動するのを待っている間は、ループで眠れません。 Sleep 1 まだインストールが設定されていない状態で問題が発生しました。速度が遅いコンピュータでは、この値を増やす必要があります。
- VirtualBoxの起動後にExcelが起動しない場合があります。
引用する
ベストアンサー1
いくつかの調整:
- アプリケーションパスをハードコードする代わりにcmd.exe実行コマンドを使用します。
options=(
--username WINDOWSUSER
--exe "%SystemRoot%\system32\cmd.exe"
-- 'cmd' /c start "run this" "$fixedFilePath"
)
ここで、 $fixedFilePath はコードと同じです。 $fixedFilePathにスペースが含まれている場合でも、これらのオプションは有効です。
これはスクリプトを一般化します。これで、Excelファイルだけでなく、すべての種類のファイルで動作します。
$fixedFilePathがWindowsクライアント上のプログラムへのフルパスである場合でも機能します。 %PATHのプログラム名(拡張子を含む)、またはwinwordなどの登録済みプログラムの場合は名前(拡張子を含む)。 exe、Excel.exe。
次に、stderrでVBoxManage guestcontrolによって返された文字列をテストしました。
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
(その一部は私が借りたものです。このソース)