DMMにて美少女ゲームを購入したことがある人なら必ずと言っていいほど目にするソフト電池、
LinuxなどWindows以外のOSでWindowsアプリを動かすとなるとWineという互換レイヤーを使うことになりますが、
今まではWineでソフト電池を動かすことができず仮想マシンを使ったりUnwrapしたりしていた人が多かったはず…
今回はWineにパッチを当てることによってそのソフト電池が動くようになったので、
それらのパッチの内容と実際にWineでソフト電池を使う方法をご紹介します。
(※動作確認をした構成はUbuntu 26.04.01 / Wine 11.0 / ソフト電池ランタイム Ver.5.0.9.0です)
パッチの内容
CRYPT_STRING_HEXの実装
CryptBinaryToStringA/W という関数にCRYPT_STRING_HEX フラグを渡すと、
未実装であったため正しく処理できていませんでした。
ImageGetDigestStreamのバグ修正
ImageGetDigestStream の実装が不十分だったためWindowsの動作に遵守する形に改修しました。
このバグによりUCX.ocxの登録が失敗するなどして正常にソフト電池が動作しませんでした。
Windows Installerのバグ修正
WineのWindows Installerではソフト電池 ランタイムインストーラー (64bit)をインストールする際、
COMクラスが無条件に64bitビューに登録されてしまいクラッシュを引き起こしていました。
そのため適切にCOMクラスを処理するように変更し、
元々パッチに書いていたint3を一定条件で無視する処理を削除しました。
このバグにより従来SdMeter.exe などを開くときにクラッシュしていました。
Let’s Build! (Linux編)
今回検証した環境はUbuntu 26.04.01(amd64)なのでそちらのやり方をメインとして掲載します。
他のディストリビューションでもBuilding Wineをある程度読むとビルドはできるかと思います。
依存関係のインストール
まずはWineのビルドに必要な依存関係のインストールを行っていきます。
Ubuntu / Debian (amd64)
sudo apt update
sudo apt install -y build-essential bison flex \
gcc-multilib gcc-mingw-w64 libasound2-dev bluez \
libpulse-dev libdbus-1-dev libfontconfig-dev libfreetype-dev \
libgnutls28-dev libgl-dev libunwind-dev libx11-dev \
libxcomposite-dev libxcursor-dev libxfixes-dev libxi-dev \
libxrandr-dev libxrender-dev libxext-dev libwayland-bin \
libwayland-dev libegl-dev libxkbcommon-dev libxkbregistry-dev \
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
libsdl2-dev libudev-dev libvulkan-dev libcapi20-dev \
libcups2-dev libgphoto2-dev libsane-dev libkrb5-dev \
samba-dev ocl-icd-opencl-dev libpcap-dev libusb-1.0-0-dev \
libv4l-dev libavcodec-dev libavformat-dev libavutil-dev \
gettext libpcsclite-devSteamOS / Arch Linux (amd64)
sudo pacman -Sy
sudo pacman -S base-devel git lib32-glibc mingw-w64-gcc \
alsa-lib bluez libpulse dbus fontconfig \
freetype2 gnutls mesa libunwind libx11 \
libxcomposite libxcursor libxfixes libxi \
libxrandr libxrender libxext wayland \
libglvnd libxkbcommon gstreamer \
gst-plugins-base-libs sdl2 systemd \
vulkan-icd-loader vulkan-headers \
libcups libgphoto2 sane krb5 smbclient \
ocl-icd libpcap libusb v4l-utilsWineをクローン
公式GitLabリポジトリからWineをクローンしてきます。
パッチ自体はWine 11.0をもとに作っているのでwine-11.0ブランチをクローンします。
ソースコードの量もそこそこあり完了までは多少時間がかかります。
git clone -b wine-11.0 https://gitlab.winehq.org/wine/wine.git wine-11.0パッチのダウンロード
パッチはGitHubでホストしているのでダウンロードしていきます。
お好みでcurlかwgetのコマンドを利用してダウンロードしてください。
curl -O https://raw.githubusercontent.com/fitudao3788/wine-patches/refs/heads/wine-11.0/patch/softdenchi-fixes.patch
# or
wget https://raw.githubusercontent.com/fitudao3788/wine-patches/refs/heads/wine-11.0/patch/softdenchi-fixes.patchWineにパッチを適用
ではWineのソースコードにパッチを当てていきます。
cd wine-11.0
git apply ../softdenchi-fixes.patchWineをビルド
いよいよWineをビルドしていきます。
ビルド時間はコンピューターの性能に左右されますがかなり時間がかかるので辛抱強く待ってください。
./configure --enable-archs=i386,x86_64
make -j$(nproc)Wineをインストール
ビルドが終わったらシステムにインストールしていきます。
sudo make installLet’s Build! (macOS編)
今回はApple Silicon搭載のmacOSを前提に解説をしていきます。
事前準備
まず初めにXcodeのインストールを済ませてmacOS SDKをインストールします。
次にRosetta 2を下記のコマンドでインストールします。
softwareupdate --install-rosettamacOSでWineをビルドするにはMacPortsが必要なので、
下記リンクから端末のOSバージョンに合わせたインストーラーをダウンロードしてインストールしてください。
リポジトリの追加および同期
まずはMacPortsでWineビルドするために下記のコマンドを実行します。
echo "build_arch x86_64" | sudo tee -a /opt/local/etc/macports/macports.confつぎにMacPortsのWineリポジトリをクローンしてきます。
sudo git clone --recursive https://github.com/fitudao3788/wine-macports /opt/wine-macportsクローンが終わったらリポジトリのインデックスを生成します。
sudo portindex /opt/wine-macportsインデックス作成完了後/opt/local/etc/macports/sources.conf をひらいて、
下記のようにrsync:// から始まるデフォルトのリポジトリの上にfile:// からはじまるリポジトリを書きます。
file:///opt/wine-macports [nosync]
rsync://rsync.macports.org/macports/release/tarballs/ports.tar.gz [default]最後にローカルリポジトリを含めて同期を行います
sudo port syncインストール
ここからはかなり時間がかかるので余裕をもって実行してください。
まずは下記のコマンドを実行してWineの依存パッケージをインストールします。
arch -x86_64 zsh
sudo port install nettle use_xcode=yes libffi use_xcode=yes次にWine本体をインストールしていきます。
さっきまで開いていたターミナルは開きなおすかexit コマンドを実行して、
下記のコマンドを実行します。
sudo port install wine-stable use_xcode=yesめんどくさい人へ…
こちらのページにてWine-11.0のパッケージを配布しています。
未署名なので一度実行した後プライバシーとセキュリティから開くボタンを押さないといけないかもしれません。
またデフォルトではパスが通っていないため、
下記のようなコマンドを.zprofile や.zshrc に記載する必要があります。
export PATH="/opt/local/bin:/opt/local/sbin:$PATH"HomebrewでかつてあったWine Stable.app などのようなラッパーはないので、
Automatorで下記のシェルスクリプトを埋め込んだものを使うのが便利です。
アプリケーション→シェルスクリプトを実行→
入力の引き渡し方法:引数として
wine $@実際に動かしてみよう!
インストールまでお疲れさまでした!🎉
では実際にソフト電池のランタイムをインストールしていきましょう!
ランタイムのインストール
下記の公式ページから64bit OS用のランタイムをダウンロードします。
ダウンロードが終わったら下記のようにインストーラーを起動します。
wine <path/to/sdrt5090_x64.exe>初回起動の際にはMonoのインストールをするかというプロンプトが表示されるのでインストールを実行します。
ランタイムの登録
2026年09月29日追記:
Windows Installerのバグにより適切に登録されていないのが原因のようでした。
現在ではこのコマンドを実行する必要はありません。
どういう条件で発生するのか未検証ですが下記のコマンドで登録を行っておいた方がいいかもしれません。
wine "C:\Program Files (x86)\SoftDenchi\UCManSvc.exe" /RegServer完了後は一旦WineServerをシャットダウンします。
wineserver -kExtra: ちょっとした工夫
Wineをデフォルトで動かすこともできますがやっておくと便利な設定を挙げます。
Winetricksのインストール
Wineを利用する上で設定やインストールを気軽に行えるWinetricksをインストールします。
Ubuntu / Debian (amd64)
sudo apt install winetricksmacOS (Apple Silicon)
sudo port install winetricks日本語フォントのインストール
標準のままだと日本語の表示が文字化けしてしまうのでcjkfontsをインストールします。
winetricks cjkfontsフォントを見やすくする
標準のままでも使えなくはないですがフォントの汚さを解消するため下記のコマンドを実行します。
winetricks fontsmooth=rgbまとめ
どうでしょうか、自身も以前まではWineでソフト電池が動かないといったこともあり、
なかなかWindows離れすることができなかったのですがLinux系OSを常用できる足かせが一つ外れたように思います。
これからもWineがますます互換性を高めていき、よいWindowsの代替となることを期待しています。








コメント