![사용자 상호작용 없이 와인 사용하기](https://linux55.com/image/61801/%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%83%81%ED%98%B8%EC%9E%91%EC%9A%A9%20%EC%97%86%EC%9D%B4%20%EC%99%80%EC%9D%B8%20%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0.png)
쉘 스크립트에서 Windows 실행 파일(콘솔 애플리케이션)을 실행하고 싶습니다. 이 스크립트는 자동으로 패키지를 빌드하는 대규모 프로젝트의 일부이므로 사용자 상호 작용을 피해야 합니다.
실제로 내가 사용하는 것은 다음과 같습니다.
export WINEARCH=win64
export WINEPREFIX=/somewhere/$WINEARCH
wine pgen.exe
기본적으로 작동하지만 다음과 같은 문제가 있습니다.
- 비어 있는 경우
WINEPREFIX
(처음 실행하는 경우) 구성 대기 중이라는 대화 상자가 나타납니다. 나는 실행 중인 X 서버에 의존하는 것을 피하고 싶습니다. - 이전에 설치되지 않은 경우
wine
Gecko를 설치하라는 창이 나타나고 사용자 개입이 필요합니다. WINEPREFIX
wine을 호출하는 사용자가 소유해야 하므로 위 애플리케이션을 실행하기 위해 시스템 전체 래퍼를 제공하는 방법을 모르겠습니다.
후자의 문제(이 문제 없이는 살 수 있음)를 제외하고 다른 문제는 모두 차단됩니다. 결국에는 콘솔 응용 프로그램을 실행하고 싶습니다.
답변1
wine
테스트 실행을 사용 하면 $DISPLAY
대화 상자 표시를 건너뛰고 사용자 상호 작용 없이 실행됩니다.
DISPLAY= wine pgen.exe
접두사 소유권 문제를 피하기 위해 저는 일반적으로 WINEPREFIX
접두사가 매번 다시 생성되도록 임시 디렉터리를 지정합니다(그러나 이는 느립니다).
답변2
X 세션에서 한 번 실행하고 모노 등을 구성하도록 하여 Wine 환경을 "시작"할 수 있습니다. 그런 다음 전체 디렉터리를 백업 .wine
하고 이를 콘솔 응용 프로그램을 실행해야 하는 모든 사용자의 기반으로 사용하십시오.
xvfb
가상 X 서버로 사용할 수 있습니다 .여기자동으로 시작하는 방법과 같습니다. 그런 다음 export DISPLAY=:1
와인 제조 과정을 시작하기 전에. 콘솔 실행 파일만 실행하더라도 와인이 모니터 없이 실행되는 것을 방지하려면 이것이 필요합니다. YMMV.
WINEPREFIX
와인을 실행하는 사용자가 트리를 소유해야 하는지 아니면 .reg
특정 위치(예: 파일, 임시 위치)에 대한 쓰기 권한 만 필요한지 잘 모르겠습니다 .