今更ハニセレ

ARTICLE PAGE

「やきいも」を使ってみた2 - シンボリックリンク地獄編

author photo

Byhslre

※ 2017/12/17 内容を全面的に書き直した記事を作成しました。
「やきいも」の効率的な運用とバックアップ


前回「やきいも」を使ってみた1 - UAC波乱万丈編からの続きです。

※「やきいも」はコマンドプロンプトなどがある程度使える人でコンピューターの事が多少なりともわかっている人でないと使いこなすのは難しいです。


「やきいも」 画面
前回までは、ファイルを追加・置き換えするMODのみを使いました。

今回は次にpluginを追加したり、本体のファイルを書き換えるMODをインストールしてみましょう。

テスト環境
D:\YakiImo\HoneySelect = 製品フォルダ(バニラ環境)
D:\YakiImo\BakedPotato = 「やきいも」フォルダ

ggmod、skintexmodなどの普通のpluginとIPA.exeの他widesilierとHSconfilctResolverとMoreSlotIDを追加しました。

MoreSlotID

「この環境にする」をクリックしてから「D:\YakiImo\HoneySelect」のMoreSlotIDシンボリックリンクを実行するとパッチを当てたDLLがきちんと仮想環境に作られていました。

念のため実環境にある「Assembly-CSharp.dll.Original」のファイルサイズをオリジナルと比較してみたら同一でした。

ちゃんとバックアップもされているみたいですね。

仮想環境のフォルダを確認してみると存在しなかったはずの「・・・\HoneySelect\HoneyStudio_64_Data\Managed\Assembly-CSharp.dll」がありましたのでほぼ間違いないでしょう。

結論:MoreSlotIDのシンボリックリンクは「D:\YakiImo\HoneySelect」フォルダから実行してもキチンと適用され、バックアップされる。

※「やきいも」以外のツールを使ってファイルの内容を変更した場合でも念のために「やきいも」で「この環境にする」をクリックして最新の状態にアップデートするようにしてください。

IPA.exeとwideslider

問題はpluginの方です。「.HoneySelect_64.exe」ファイルをIPA.exeのシンボリックリンクに落とそうとしても落ちません。

もう一つはwidesliderのexeです。こちらもエクスプローラーからダブルクリックしても正常に動きません。

IPAを使うpluginとwidesliderは保留とします。

しかし、「やきいも」の中で、環境を切り替えてシンボリックリンクできちんと処理出来ている以上、きちんと動くはずです。

なぜこのようなことが起きるのでしょうか?

「やきいも」の大まかな仕組み

「やきいも」の大まかな仕組みは「環境を切り替える」をクリックすると、実フォルダとまったく構造が同じで別の場所にある仮想環境フォルダにあるファイルを比べて、同一名ファイルがあったら元のファイルをリネームしてシンボリックリンク(ショートカットのようなもの)を作り、そうでない場合は単にシンボリックリンクを作ります。

シンボリックリンクとは何なのか?

シンボリックリンクの使い方と落とし穴 - Qiita

シンボリックリンクとは何なのか?シンボリックリンクとショートカットの動作の違いは上の記事を読んでいただければよく理解できると思います。

重要なのはここです。


シンボリックリンクとショートカット
「シンボリックリンクは実行するとそのパス(実行されたパス)で実行するが、ショートカットは元のパスで実行する」ということです。

例を挙げるとD:\YakiImo\BakedPotato\env\env01\HoneySelect\ipa.exeをD:\YakiImo\HoneySelectにそれぞれショートカット、シンボリックリンクを作って実行すると

ショートカットは元のD:\YakiImo\BakedPotato\env\env01\HoneySelect\ipa.exeとして実行し、シンボリックリンクはD:\YakiImo\HoneySelect\ipa.exeとして実行するということです。

しかし、ここに落とし穴があります。それは

「ファイルダイアログを使ってシンボリックリンクをたどると、リンク元のパスになってしまう!」ということです。

これはエクスプローラーから実行しても同じ結果になってしまうようです。

つまり、正常に実行するには「エクスプローラーからダブルクリックではダメでコマンドプロンプトからプログラム名を入力して実行しなくてはならない」ということです。

とても一般ユーザーには要求できない作業だと思いますが、これで問題は解決します。

MoreSlotIDのみが正常に適用できたのは、プログラムの内部でコマンドプロンプトを使うプログラムだったからのようです。

※ このような仕組みになっていますので、「やきいも」のフォルダと「製品フォルダ」はできる限り同一ドライブ上に置くのが望ましいです。ゲームの動作として、読み出しするファイルのアクセス速度が極端に違うという環境では恐らくデバッグされていないと思います。ファイルによって極端に読み出し速度が違うとエラーが出る可能性がないとは言えません。

HS Conflict Resolver

次にIDが衝突しまくっているZeaska氏のMODを全て入れて見ます。

ファイルの一覧とダウンロード先はこちらの記事にありますので、参考にしてください。

本当は雨宮さんのMODを使おうと思ったのですが、ほとんどIDが衝突しておらず、わかりにくいためにZeaskaさんのMODを使います(笑

ファイルを「追加」して、「この環境にする」をクリックした後、「やきいも」終了してHS Conflict Resolverを起動してみました。


やきいも on Conflict Resolver1
こちらもやはり、普通にエクスプローラーから起動すると衝突リストに表示されません。


やきいも on Conflict Resolver2
コマンドプロンプトから実行すると衝突リストに表示されました。
※衝突を修正した後は「やきいも」を起動して「この環境にする」をクリックするようにしてください。

というわけで、HS Conflict Resolverもコマンドプロンプトから実行すればきちんと表示されます。

「やきいも」本体にコマンドプロンプトから実行する機能があれば便利でしょうね。

まあ、クレクレばかりでも仕方無いので、こちらで
「HoneySelect_64.exe、StudioNEO_64.exe、をIPA.exeのシンボリックリンクに登録する」
「HoneySelect_64_WideSliderPatch.exe、StudioNEO_64_WideSliderPatch.exeのシンボリックリンクを実行する」
「MoreSlotID.exeのシンボリックリンクを実行する」
「HSConflictResolver.exeのシンボリックリンクを実行する」
バッチファイルを作成しました。
よろしければ使ってください。
「やきいも」に登録しているハニーセレクトの製品フォルダにコピーしてダブルクリックするだけです。
メニュー選択式です。
それなりに理解できる人向けですので、何をしているかはバッチファイルの中を読んで理解してください。32bit環境の人は適宜書き換えてください。
適当に作ってあるので少し見づらいかもしれませんが、気に入らないところは直して使ってください。

「やきいも」用バッチファイルダウンロード

今日の記事で何を言ってるのか理解できる人は書き換えられると思います。

まとめ

「やきいも」はその特性を理解し、使いこなすことができれば非常に強力な環境構築ツールです。

「やきいも」は特に商用ソフトというわけではありませんので、一般ユーザーが使うことを想定していないのかもしれません。

しかし、より多くの人がこのソフトを便利に使うには、もう少し操作や動作に関してブラッシュアップが必要に思います。

例えば、仮想環境にフォルダ・ファイルを追加したり、「この環境にする」はPCの性能によってはかなりの時間を要することがありますが、待ち時間の間、最低でも砂時計やできればプログレスバーを表示したほうが良いように思います。

皆が最新のCPUとM2のSSDを装備して、瞬時に処理が終わるような環境であればよいですが、現実はそうではないでしょう。

前回のまとめでも指摘した点も合わせて、こうした細かい点を直していって、誰もが戸惑うことなく使えるようになったとき、『「ハニセレ」や「プレイホーム」をやるなら「やきいも」がないと使ってられないよね』といわれるようなツールになると思います。

現時点では私のように試行錯誤を厭わないユーザーかPCの動作やプログラムに詳しいユーザー向けのツールといわざるを得ません。

もっと多くの方に使ってほしい非常に便利なツールなだけに残念です。

私の記事を読んで「これから使ってみよう」と思った方は、私の失敗している部分をチェックしてスムーズに導入・運用ができるようにしてください。

※試してみて出た不具合

前提:BakedPotatoのインストール場所と製品フォルダを一度全部同一ドライブ内で移しています。

不具合0
何も追加していない状態で「履歴」をクリックすると


エラー0
上のようなエラーメッセージが出ます。
「続行」をクリックするとそのまま正常に続行するようです。
恐らくログがない状態でログを見ようとするとする際のエラートラップ処理がなされていないのではないかと思います。

※ 今回の記事に関しては、削除はしませんが、コメント欄で指摘のありましたようにかなり勘違いしているところがありましたので、現在新しい記事を作成中です。上の内容については訂正記事を書いた後、こちらからリンクを貼りたいと思います。Nockyさん、ご指摘ありがとうございました。訂正記事はしばらく時間をいただきますのでご了承ください。都合の悪いことは消して逃げる人間だと思われるのも心外ですので、この記事はこのまま残しておきます。私の失敗の記録だと思ってください。(笑


※ 2017/12/17 内容を全面的に書き直した記事を作成しました。
「やきいも」の効率的な運用とバックアップ
Share

Comments 4

Nocky  

こんにちは。
IPAやワイスラの場合は、バニラ環境のコピーにパッチを当て、差分だけ取り出して元と同じフォルダ構造に格納した後に焼き芋で導入すれば行けます。
差分調べるのが面倒ですがw

2017/12/14 (Thu) 08:02 | EDIT | REPLY |   

hslre  

Re: タイトルなし

> こんにちは。
> IPAやワイスラの場合は、バニラ環境のコピーにパッチを当て、差分だけ取り出して元と同じフォルダ構造に格納した後に焼き芋で導入すれば行けます。
> 差分調べるのが面倒ですがw

 こんにちは。初めまして、コメントありがとうございます。
 一応この導入記事はバニラ環境にすべてのプラグイン類を「やきいも」で使ったらどうなるかというテスト記事なのですが
 結論としてはこの場合「完全なバニラ環境を保持することはできない」というものですね。
 書くことが多すぎて書き忘れてしまいました。
 MoreSlotIDの場合、オリジナルのバックアップを自動で作成してくれるのですが、そうでないものもありますね。
 一応あとから私の実運用環境をどのようにするかの記事を作成する予定です。
 www.vector.co.jp/magazine/softnews/131203/n1312031.html
 上のフリーソフトを使えば二つのフォルダをコンペアして差分をピックアップすることは可能のように思います。

 テストすればするほど書かなければならないことが増えていくので、私の力不足もありなかなかすべてを伝えきれて
 いないのが実情です。
 今後も何かありましたらご指摘のほうよろしくお願いします。

2017/12/14 (Thu) 08:36 | EDIT | REPLY |   

Nocky  

ごめんなさい、説明が雑過ぎました。
やきいもはHoneySelectフォルダ内ならシンボリックリンクを作れるので、完全バニラ環境は維持可能です。

やきいもの製品フォルダをバニラAとします。
バニラAのコピーを作ってバニラBとします。

1.バニラBにIPAを適用
2.バニラBとバニラAの差分を取り出して、元と同じフォルダ構造に配置
3.これをやきいもの追加ボタンで環境1などに追加

これで「製品のみ」が完全バニラ「環境1」がIPA適用になります。

2017/12/14 (Thu) 19:08 | EDIT | REPLY |   

hslre  

Re: タイトルなし

> ごめんなさい、説明が雑過ぎました。
> やきいもはHoneySelectフォルダ内ならシンボリックリンクを作れるので、完全バニラ環境は維持可能です。
>
> やきいもの製品フォルダをバニラAとします。
> バニラAのコピーを作ってバニラBとします。
>
> 1.バニラBにIPAを適用
> 2.バニラBとバニラAの差分を取り出して、元と同じフォルダ構造に配置
> 3.これをやきいもの追加ボタンで環境1などに追加
>
> これで「製品のみ」が完全バニラ「環境1」がIPA適用になります。

コメントありがとうございます。
確かにそうですね。
今書いている記事にもそのように書き加えさせていただきます。

2017/12/14 (Thu) 19:34 | EDIT | REPLY |   

Leave a reply