アプリアイコン

Coheremote

VMware Fusion上のWindowsアプリをmacOSネイティブアプリのようにDockに統合するラッパーアプリ生成ツール。

アプリのスクリーンショット

アプリ概要

Coheremoteは、VMware Fusion上で動作するWindowsアプリケーションを、macOSのネイティブアプリのようにDockに統合するラッパーアプリ生成ツールです。 RemoteApp(RDP)技術を使用して、シームレスな操作体験を提供します。

こちらのXのポストからインスピレーションを受けました。

主な機能

前提条件

要件 備考
macOS 13.0以降 Ventura 以上
VMware Fusion /Applications/VMware Fusion.app にインストール済み
Windows App Mac App Storeからインストール(旧Microsoft Remote Desktop)
RDPファイル RemoteApp Tool または Windows App からエクスポートして作成(詳細は下記)
Xcode Command Line Tools 生成アプリのコンパイルに swiftc が必要
フルディスクアクセス Coheremote本体と生成されたラッパーアプリに付与が必須

使い方

ラッパーアプリの生成

  1. Coheremoteを起動
  2. 設定を入力
    • アプリケーション名: 生成するラッパーアプリの名前
    • 保存先: 生成した .app の保存場所
    • アイコン画像(オプション): PNG、JPG、ICO、ICNS ファイル
    • VMパス: .vmx ファイルまたは .vmwarevm バンドル
    • VM暗号化パスワード(オプション): 暗号化VMの場合
    • RDPファイル: RemoteApp用の .rdp ファイル
    • Windowsユーザー名: ログイン用
    • Windowsパスワード(オプション): アプリランチャーのアプリ一覧取得に使用(VMware Toolsが必要)
  3. オプション設定
    • RemoteApp変換(デフォルト: OFF): RDPファイルにRemoteApp設定を自動注入。RemoteApp Toolを使わずに、通常のRDP接続を個別アプリのRemoteApp接続に変換できる
    • アプリ終了時にVMをサスペンド(デフォルト: ON)
    • アプリ終了時にWindowsをシャットダウン(デフォルト: OFF)
    • メニューバーにアプリランチャーを追加(デフォルト: ON)
    • Coheremoteバッジをアイコンに追加(デフォルト: OFF)
  4. アプリをビルド をクリック
  5. 生成されたアプリにフルディスクアクセスを付与

Dockメニュー(右クリック)

ラッパーアプリのDockアイコンを右クリックすると以下が表示されます(日英自動切替):

メニュー 説明
再接続 / Reconnect RDP接続を再確立(Windowsアプリを閉じてしまった場合に使用)
Windowsを再起動 / Restart Windows VMにソフトリスタートを送信し、起動後にRDPを自動再接続
シャットダウンして終了 / Shutdown and Quit Windowsをシャットダウンしてからラッパーアプリを終了

アプリランチャー

メニューバーのアイコンをクリックすると、ランチャーパネルが表示されます:

注意: アプリランチャーのアプリ一覧を利用するには、Coheremoteの設定でWindowsパスワードを入力し、Windows側にVMware Toolsがインストールされている必要があります。

仕組み

ビルドプロセス

Coheremoteは以下の手順でスタンドアロンの .app バンドルを生成します:

  1. RDPファイルにユーザー名を注入(BOM・改行コードを保持)
  2. カスタムアイコンを sips + iconutil でmacOS .icns 形式に変換(Retina対応)
  3. VM暗号化パスワードをmacOSキーチェーンに保存
  4. Swiftソーステンプレートにパラメータを埋め込み、swiftc でネイティブバイナリをコンパイル
  5. 標準的な .app バンドル構造にパッケージング

生成されるアプリの構造

MyApp.app/
  Contents/
    Info.plist
    MacOS/
      MyApp          # コンパイル済みSwiftバイナリ
    Resources/
      AppIcon.icns   # アプリアイコン
      app.rdp        # 修正済みRDPファイル

生成されるアプリの動作

  1. VMware Fusionの起動確認 - 未起動なら自動起動
  2. VMの起動/再開 - open -a "VMware Fusion" でVMを起動(コールドブート・サスペンド解除・暗号化VMすべてに対応)
  3. VM状態のポーリング - 1秒間隔で起動完了を確認(タイムアウト: 120秒)
  4. RDP接続 - Windows App(またはMicrosoft Remote Desktop)で接続
  5. Dockに常駐 - VMライフサイクルを継続管理
  6. 終了時処理 - 設定に応じてサスペンドまたはシャットダウン
  7. ログ記録 - すべての操作を ~/Library/Logs/Coheremote/ に記録

RDPファイルの作成方法

方法1: RemoteApp Tool(推奨)

個別のWindowsアプリケーションをRemoteAppとして公開する方法です。

  1. Windows側で RemoteApp Tool をダウンロード・実行
  2. + をクリックしてアプリケーションを追加(例: notepad.exe
  3. アプリケーションを選択し、Create Client Connection をクリック
  4. .rdp ファイルを保存
  5. この .rdp ファイルをmac側にコピーし、Coheremoteで使用

方法2: Windows Appからのエクスポート

macOS側のWindows App(旧Microsoft Remote Desktop)から既存の接続設定をエクスポートする方法です。

  1. Windows App を起動
  2. 接続先のPCを追加(まだ追加していない場合): + > PCの追加 をクリックし、PC名(VMのIPアドレスまたはホスト名)を入力して保存
  3. 追加したPCを右クリック > RDPファイルにエクスポート を選択
  4. .rdp ファイルを保存
  5. この .rdp ファイルをCoheremoteで使用

注意: Windows Appからエクスポートした場合はフルデスクトップ接続になります。個別アプリのRemoteApp接続にするには、方法3(Coheremoteの変換機能)を使うか、.rdp ファイルをテキストエディタで開いて以下の行を追加してください:

remoteapplicationmode:i:1
remoteapplicationname:s:アプリ名
remoteapplicationprogram:s:アプリのパス

例(メモ帳の場合):

remoteapplicationmode:i:1
remoteapplicationname:s:Notepad
remoteapplicationprogram:s:C:\Windows\System32\notepad.exe

方法3: CoheremoteのRemoteApp変換機能

Coheremoteの設定画面で直接RemoteApp変換を行う方法です。RDPファイルの手動編集が不要になります。

  1. 方法2で .rdp ファイルを作成
  2. Coheremoteの設定で RemoteApp変換 をONにする
  3. アプリ名(表示名)と プログラムパス(Windows側の実行ファイルパス)を入力
  4. ビルド時にRDPファイルへRemoteApp設定が自動注入されます

セキュリティに関する注意

トラブルシューティング

問題 対処法
「Operation not permitted」エラー フルディスクアクセスが付与されていません。システム設定 > プライバシーとセキュリティ > フルディスクアクセスでアプリを追加してください。
VMが起動しない VMware Fusionが /Applications にインストールされているか、VMパスが正しいか確認。暗号化VMの場合はパスワードも確認。詳細はログファイル ~/Library/Logs/Coheremote/<アプリ名>.log を確認してください。
RemoteAppがIMEしか表示されない これはWindows側の問題です。Dockメニューから「Windowsを再起動」を実行してください。解決しない場合は、Windows側でRemoteAppの設定を確認し、.rdp ファイルを再作成してください。
Windowsアプリを閉じてしまった Dockメニューから「再接続」を選択するとRDP接続を再確立できます。
複数のWindowsアプリを同時に使用する場合 2つ目以降のアプリのウィンドウが表示されないことがあります。その場合は、該当アプリのDockメニューから「再接続」を選択してください。注意: 複数のラッパーアプリが同じVMを共有している場合、最後のアプリが終了するまでVMのサスペンド/シャットダウンは行われません。
RDP接続に失敗する Windows Appがインストールされているか、RDPファイルが有効か、Windows認証情報が正しいか確認してください。
Windowsがハングまたはフリーズした Dockメニューから「Windowsを再起動」を選択してください。VMにソフトリセットが送信され、Windows起動後に自動的にRDPが再接続されます。