Oracle VirtualBox의 Windows 클라이언트에 설치된 애플리케이션에서 Linux 호스트의 파일을 열(두 번 클릭)할 수 있기를 원합니다.
세부 사항:Linux 호스트의 ~/Documents 폴더에 myfile.docx가 있고 MS Word 애플리케이션이 Windows 게스트 OS와 함께 설치되어 있습니다. ~/Documents 디렉터리도 전체 읽기 및 쓰기 액세스 권한이 있는 Y:\ 경로 아래 Windows 게스트에 설치됩니다. 또한 Linux 호스트와 원활하게 작동하도록 Windows 게스트를 설정했습니다(이것은 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=로 시작하는 줄 끝에서 이 매개변수를 완성하는 방법을 아는 사람이 있습니까?
답변1
주요 부분을 마친 것 같습니다. 이제 이름을 변환해야 합니다. 스크립트 작성을 제안합니다. 데스크탑 항목이 Unix 파일 이름으로 스크립트를 시작하도록 한 다음 스크립트가 이름을 변환하고 VBoxManager를 호출하도록 합니다(예제에서 했던 것처럼).
sed
당신의 친구는 전환기에 있습니다.
답변2
여기까지 읽어주시고 댓글 달아주신 모든 분들께 감사드립니다...
게스트 애플리케이션 클릭으로 호스트 파일을 열도록 관리됩니다. 그것은굉장한 경험이제 Linux 호스트에서 virtualbox를 사용하고 있습니다.
이것이 완전한 솔루션입니다!
단계는 아래에 요약되어 있습니다.
1단계-->다음 요구 사항이 충족되는지 확인하세요.
- 열려는 파일은 호스트 LINUX 파일 시스템에 있습니다. (하위 디렉터리도 지원됩니다.)
- 호스트의 문서 디렉토리는 WINDOWS 게스트에서 Y:\로 마운트됩니다(바람직하게는 쓰기 권한이 있는 경우).
- 호스트의 다운로드 디렉터리는 WINDOWS 게스트에 Z:\로 설치됩니다(가급적 쓰기 권한이 있는 경우).
- 호스트의 $HOME 디렉터리는 WINDOWS GUEST에서 X:\로 설치됩니다(가급적 읽기 전용 권한 사용).
2단계--> $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와 같은 사용자 경로로 바꾸세요.
3단계-->다음 내용을 포함하는 "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 'VBox는 게스트 제어를 관리합니다.
- 문자열 교체윈10그리고 너의 이름은Windows 게스트 가상 머신MS오피스가 설치되어 있습니다.
- 바꾸다내 윈도우 사용자 이름그리고 당신 것로그인 사용자 이름Windows 게스트 운영 체제에서
- 바꾸다내 윈도우 비밀번호그리고 당신 것로그인 비밀번호Windows 게스트 운영 체제에서
4단계--> *.docx를 다음과 결합호스트 파일 시스템에는 "Word" 프로그램에 대한 .doc 파일이 포함되어 있습니다. 방법은 다음과 같습니다. 1. MS Word 파일(Linux 호스트 파일 관리자(예: nautilus, nemo, Dolphin 등)에서 *.docx 파일을 엽니다. 2. *.docx 파일을 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 속성을 클릭합니다. 창이 나타납니다. 3. 연결 프로그램 탭을 클릭하고 사용 가능한 애플리케이션 목록을 스크롤합니다. "Word 365 ProPlus"를 선택하고 창 오른쪽 하단에 있는 "기본값으로 설정"을 클릭합니다.
그게 다야!
다음번에는 가상박스에서 원활한 모드(로그인 후 CTRL+L)로 Windows 머신을 시작하고 잊어버리세요.
Linux 파일 관리자에서 *.docx 파일을 직접 두 번 클릭하기만 하면 됩니다.
짜잔, MS Word 응용 프로그램에서 즉시 열립니다.