9

私の Windows アプリケーションは、Wine を使用して *nix で頻繁に使用されます。

これはファイル中心のアプリケーションであるため、Windows の「ドキュメント」フォルダを頻繁に使用 (およびユーザーに表示) します (を使用して解決CSIDL_PERSONAL)。残念ながら、通常は空で未使用の偽の Wine/Windows ディレクトリを指す Wine の下にあります。代わりに、ユーザーに Unix のホーム フォルダを参照してもらいたいと思います。

Wineの下でその場所を見つける信頼できる方法はありますか?

環境変数を読み取れることを望んHOMEでいましたが、(他のほとんどの変数とは対照的に) Windows 環境にはエクスポートされません。

現在、私は家を使って推測していZ:\home\%USERNAME%ます。しかし、それは私には堅牢に見えません。

ホーム ディレクトリを見つける方法がない場合、少なくとも Wine のルート ドライブ (Z:デフォルト) を検出する方法があるので、少なくともパスのドライブ部分をハードコードする必要はありませんか?

4

2 に答える 2

9

より良い答えがないために、現在の回避策/ハックを共有しています:

*nix プラットフォームでは、デプロイを管理下に置いています (特に OS X)。HOME環境変数をスタートアップ スクリプトから別の変数にコピーします (たとえば、WINE_HOME. ほとんどの環境変数 ( の注目すべき例外を除くHOME) は、Windows/Wine 環境にエクスポートされます。したがってWINE_HOME、アプリケーションから を読み取り、先頭Z:\にスラッシュを追加してバックスラッシュに変換できます。

展開を制御していないプラットフォームの場合、USERNAME変数を使用してホームを推測することしかできませんZ:\home\%USERNAME%。これは特に、ホームが ではない OS X では機能しませ/users/home

編集:少し役立つファイルのワインパスを取得するという質問が見つかりました。*nix では、 を使用してwinepath -w ~を取得できますZ:\home\username。ただし、Windows 環境から同じものを実行しても、~. 少なくとも を実行して、Wine ルートのドライブを見つけることができwinepath -w /home/usernameますZ:\home\username(デフォルトではない場合Z:\)。

于 2014-04-25T05:57:05.367 に答える