シェルスクリプトでWindows実行可能ファイル(コンソールアプリケーション)を実行したいと思います。このスクリプトは自動的にパッケージを構築する大規模プロジェクトの一部であるため、ユーザーの対話を避ける必要があります。
実際に私が使用するものは次のとおりです。
export WINEARCH=win64
export WINEPREFIX=/somewhere/$WINEARCH
wine pgen.exe
デフォルトでは動作しますが、次の問題があります。
- 空の場合
WINEPREFIX
(最初に実行している場合)、設定を待っているというダイアログボックスが表示されます。私は実行中のXサーバーに頼ることを避けたいと思います。 - 以前にインストールされていない場合は、Geckoのインストールを求める
wine
ウィンドウが表示され、ユーザーの介入が必要です。 WINEPREFIX
wineを呼び出すユーザーが所有する必要があるため、上記のアプリケーションを実行するためにシステム全体のラッパーを提供する方法がわかりません。
後者の問題(この問題なしでは生きることができます)を除いて、他の問題はすべてブロックされます。結局のところ、コンソールアプリケーションを実行したいと思います。
答え1
wine
テスト実行を有効にすると、$DISPLAY
ダイアログボックスの表示はスキップされ、ユーザー操作なしで実行されます。
DISPLAY= wine pgen.exe
プレフィックスの所有権の問題を回避するために、私は通常、WINEPREFIX
プレフィックスが毎回再作成されるように一時ディレクトリを指定します(しかしこれは遅いです)。
答え2
Xセッションで一度実行してモノラルなどを設定することで、Wine環境を「起動」できます。その後、ディレクトリ全体をバックアップ.wine
し、コンソールアプリケーションを実行する必要があるすべてのユーザーのベースとして使用します。
xvfb
仮想Xサーバーとして使用できます。ここ自動的に起動する方法と同じです。その後、export DISPLAY=:1
ワインの製造プロセスを開始する前に。コンソール実行ファイルのみを実行してもモニターなしでワインが実行されるのを防ぐには、これが必要です。 YMMV。
WINEPREFIX
ワインを実行しているユーザーがツリーを所有する必要があるのか、特定の.reg
場所(ファイル、一時的な場所など)への書き込み権限のみが必要かはわかりません。