點擊 Gnu/Linux 主機中的文件,以使用安裝在 VirtualBox 中的 MS-Windows 來賓中的應用程序打開
我希望能夠在 Oracle VirtualBox 的 Windows 客戶機中安裝的應用程序中打開 Linux 主機中的文件(點兩下)。
**詳細資訊:**我在 Linux 主機的 ~/Documents 文件夾中有 myfile.docx,MS Word 應用程序安裝了 Windows 來賓作業系統。目錄 ~/Documents 也安裝在 Windows 客戶機中的 Y:\ 路徑下,具有完全讀寫訪問權限。我還設置了 Windows 客戶機以與 Linux 主機無縫模式工作(這是 VBox 非常有吸引力的部分)。
現在,一旦我啟動了 Windows 客戶機,我就不想再為此煩惱了。我只想在 Linux 主機中點兩下 myfile.docx 以便它在 MS Word 中打開,僅此而已!(讓我們不要打擾這個 MS Word 的來源)。
事實上,作為第一步,我在 Linux 主機終端中使用以下命令打開了 myfile.docx 部分成功:
VBoxManage guestcontrol "Win07" run --exe "C:\\Program Files (x86)\\Microsoft Office\root\\Office16\\WINWORD.EXE" --username sbnwl --password myPassword -- WINWORD/arg0 "Y:\myfile.docx"
該文件立即在 MS Word 中打開。完美的!請注意,上述命令末尾的參數 (“Y:\myfile.docx”) 需要 Windows 樣式的絕對路徑。
現在我正在嘗試在路徑 ~/.local/shrare/applications 中創建一個桌面配置文件,內容如下:
[Desktop Entry] Version=1.0 Encoding=UTF-8 Type=Application Name=word NoDsiplay=true Exec=VBoxManage guestcontrol "Win07" run --exe "C:\\Program Files (x86)\\Microsoft Office\root\\Office16\\WINWORD.EXE" --username sbnwl --password myPassword -- WINWORD/arg0 HOW-TO-SUPPLY-WINDOWS-STYLE-PATH-TO-THE-FILE-BEING-DOUBLE-CLICKED? Name[en]=Word Icon=/usr/share/icons/word.png
有人知道如何在行尾用 Exec= 完成這個論點嗎?
感謝所有查看這裡並發表評論的人……
管理使用來賓應用程序點擊打開主機文件。現在,在使用 virtualbox 的 Linux 主機上,這是一種奇妙的體驗。
這是完整的解決方案!
步驟總結如下:
STEP1–> 確保滿足以下要求:
- 要打開的文件位於主機 LINUX 文件系統上(也支持子目錄)
- 主機的文件目錄安裝為 Y:\ 在 WINDOWS GUEST 中(最好具有寫入權限)
- 主機的下載目錄安裝為 Z:\ 在 WINDOWS GUEST 中(最好具有寫入權限)
- 主機的 $HOME 目錄在 WINDOWS GUEST 中安裝為 X:\(最好具有隻讀權限)
STEP2–> 您需要在 $HOME/.local/share/applications 路徑中創建一個名為“Word.desktop”(不帶引號)的桌麵條目文件,內容如下:
[Desktop Entry] Version=1.0 Encoding=UTF-8 Type=Application Name=Word 365 NoDsiplay=true Exec=$HOME/.local/share/applications/muScripts/runWord %u Name[en]=Word 365 ProPlus Icon=/usr/share/icons/MSWord.png
在上面用使用者路徑替換 $HOME,例如 /home/user
STEP3–> 製作一個名為“runWord”(不帶引號)的執行檔,包含以下內容並將其放在目錄 $HOME/.local/share/applications/muScripts/
#!/bin/bash # THIS PROGRAM (runWord) OPENS *.docx FILES ON LINUX HOST, WITH MS Word APPLICATION # INSTALLED ON A WINDOWS GUEST (IN VirtualBox). ## STEP1--> CHECK FOLLOWING REQUIREMENTS ARE MET: # 1. THE FILES ARE EITHER IN Documents OR Downloads OR any other DIRECTORY/SUB-DIRECTORY # OF THE HOST FILESYSTEM (SUB-DIRECTORIES also supported) # 2. THE host's Documents DIRECTORY IS MOUNTED AS Y:\ IN THE WINDOWS GUEST (preferably with write permissions) # 3. THE host's Downloads DIRECTORY IS MOUNTED AS Z:\ IN THE WINDOWS GUEST (preferably with write permissions) # 4. THE host's $HOME directory IS MOUNTED AS X:\ IN THE WINDOWS GUEST (prefer with read-only permissions) ## STEP2--> YOU NEED TO CREATE A DESKTOP ENTRY FILE WITH FOLLOWING CONTENTS, IN THE # $HOME/.local/share/applications PATH: # #[Desktop Entry] #Version=1.0 #Encoding=UTF-8 #Type=Application #Name=Word 365 #NoDsiplay=true #Exec=/home/hostuser/.local/share/applications/muScripts/runWord %u #Name[en]=Word 365 ProPlus #Icon=/usr/share/icons/MSWord.png # ## STEP3--> PLACE THIS FILE IN THE DIRECTORY $HOME/.local/share/applications/muScripts/ # ##--CODE DEVELOPERS/CONTRIBUTORS -- andpy73, sbnwl ##-- andpy73 https://forums.virtualbox.org/memberlist.php?mode=viewprofile&u=50134 ##-- sbnwl https://forums.virtualbox.org/memberlist.php?mode=viewprofile&u=116543 ##-- Original post at https://forums.virtualbox.org/viewtopic.php?f=7&t=91799 # clear # # Check that we have got the correct number of parameters. # if [ "$#" -ne 1 ]; then echo "Warning: Remote script requires one parameter to be passed!" # exit fi # # Check if the file exists in the host file system incase we are # called from a terminal. # if [ ! -f "$1" ]; then echo "Warning: File not found in the host file system!" echo ' Make sure the file' $1 'exists!' # exit fi # # Get the filename part from the full path given. # FILE=$(basename "$1") nixPATH=$(dirname "$1") echo 'Full UNIX path is:' $nixPATH echo 'Opening' $FILE ' ...' echo 'Full UNIX path of the file is:' $1 # # Make a new executable file having WINDOWS_PATH as argument at the end of # VBoxManage command and write the command sting in it. # mkdir ~/.tmp cd ~/.tmp rm tmpfile touch tmpfile chmod +x tmpfile printf 'VBoxManage guestcontrol "Win10" run --exe "C:\\Program Files (x86)\\Microsoft Office\\root\\Office16\\WINWORD.EXE" --username myWindowsUsername --password myWindowsPassword -- WINWORD/arg0 ' >> tmpfile if [[ $1 == "$HOME/Documents/"* ]]; then echo "The file is in Documents folder, i.e., in Y:\ of Windows host!" prefix="$HOME/Documents" partPATH=${nixPATH#"$prefix"} echo 'Partial UNIX path is:' $partPATH winPATH=${partPATH//\//\\} echo 'Partial WINDOWS path is:' $winPATH echo 'Full WINDOWS path is:' '"'Y:\\$partPATH\\$FILE'"' echo '"'Y:\\$partPATH\\$FILE'"' >> tmpfile elif [[ $1 == "$HOME/Downloads/"* ]]; then echo "The file is in Downloads folder, i.e., in Z:\ of Windows host!" prefix="$HOME/Downloads" partPATH=${nixPATH#"$prefix"} echo 'Partial UNIX path is:' $partPATH winPATH=${partPATH//\//\\} echo 'Partial WINDOWS path is:' $winPATH echo 'Full WINDOWS path is:' '"'Z:\\$partPATH\\$FILE'"' echo '"'Z:\\$partPATH\\$FILE'"' >> tmpfile else echo "The file is elsewhere, i.e., in X:\ of Windows host! (If $HOME is mounted as X:\)" prefix="$HOME" partPATH=${nixPATH#"$prefix"} echo 'Partial UNIX path is:' $partPATH winPATH=${partPATH//\//\\} echo 'Partial WINDOWS path is:' $winPATH echo 'Full WINDOWS path is:' '"'X:\\$partPATH\\$FILE'"' echo '"'X:\\$partPATH\\$FILE'"' >> tmpfile fi # # Show the contents of tmpfile (for only debugging purpose) # echo '-------------------------------------------------------------------------' echo 'This is the content of tmpfile for debugging purpose:' echo ' ' cat tmpfile echo ' ' echo '-------------------------------------------------------------------------' # # Run the commands in tmpfile for opening the double-clicked file! # ./tmpfile & rm tmpfile
請確保在上述腳本文件中以printf ‘VBoxManage guestcontrol開頭的特定行中進行以下更改
- 將字元串Win10替換為安裝了 MS Office的Windows 來賓虛擬機的名稱。
- 將myWindowsUsername替換為您在 Windows 來賓作業系統上的登錄使用者名
- 將myWindowsPassword替換為您在 Windows 來賓作業系統上的登錄密碼
STEP4–> 將*主機文件系統中的 .docx 和 .doc 文件與程序“Word”相關聯。操作方法如下: 1. 轉到Linux 主機文件管理器中的任何文件 MS Word 文件 (.docx)(例如 nautilus、nemo、dolphin 等) 2. 右鍵點擊 *.docx 文件並點擊“屬性”在上下文菜單中。將彈出一個視窗。3. 點擊“打開方式”選項卡並滾動瀏覽可用應用程序列表。選擇“Word 365 ProPlus”,然後點擊視窗右下角的“設為預設值”。
就這樣!
下次只需在無縫模式下在 virtualbox 中啟動 Windows 機器(登錄後按 CTRL+L)就可以了。
*您只需在 Linux 文件管理器中直接點兩下 .docx 文件即可。
瞧,它們將立即在 MS Word 應用程序中打開。
看起來你已經完成了主要工作。現在您需要轉換名稱。我建議寫一個腳本。讓您的桌麵條目使用 Unix 文件名啟動腳本,然後讓腳本轉換名稱,並呼叫 VBoxManager(就像您在範例中所做的那樣)。
sed
是你轉型中的朋友。