I wrote this today for my own use and after lots of debugging and testing it tens of times it seems to work flawlessly, so I'm releasing it here.
It's just a simple AutoIt script that does the following:
Mounts FF7DISC1.ISO (placed in the main game directory) using Windows 10's built in ISO mounting feature.
Launches 7th Heaven (this should be in a folder called "7thHeaven" inside the main game folder)
Sets the disc drive letter in the registry to the correct one where the ISO was mounted, as this can change when using the built in ISO mounting as there is no set drive letter.
And finally, it presses the "Launch Game" button.
It stays running in the background, once the game is closed, it will automatically close 7th Heaven and exit. It can also be changed slightly so that 7th Heaven is closed shortly after the game is launched, but the script needs to stay running in the background for Steam In-Home Streaming not to think the game has closed and close the stream.
Once the game closes it will unmount the ISO automatically.
If you use Steam In-Home Streaming (Remote Play) please add the /stream launch option to the launch parameters of the shortcut. This will make a window appear that prevents the streaming client from timing out in the beginning because it doesn't get any video. Without this, streaming didn't seem to work.
Steam will have to be ran as Administrator when using In-Home Streaming, as otherwise it can't get access to the game to emulate a keyboard/mouse/controller. If you use a controller with In-Home Streaming you may have to map it to keyboard keys in Steam Big Picture (make sure Generic Gamepad Support is enabled to be able to set per game controller mappings) and then configure the game to use the same keys, like I had to, since the game isn't compatible with XInput. I did this on the client side, but if you have the launcher added as a non-steam game, you may not be able to do it on the client side and you may need to actually launch Big Picture in the streaming client to set controller mappings on the host (I haven't tried this, so I don't know if that would even work)
The way I use it is, I have this launcher named as FF7_Launcher.exe in place of the original Steam FF7 launcher, and I have ff7_bc.exe named as ff7_en.exe (use ff7.exe/ff7_mo.exe instead if you don't use Beacause) in place of the original game executable, this way I can launch the game normally through Steam and it automatically launches with my mods enabled. This also has the benefit of letting me close the streaming client and resume streaming mid-game if the client crashes or otherwise messes up, when added as a non-steam game it would instead try to launch the game a second time when resuming the stream. Also remember that you need to change the FF7 executable path in 7th Heaven itself to match this if you rename the files.
But it should also work by just adding it as a non-steam game, you may have issues if you want to use in-home streaming though, since Steam doesn't really detect the game properly when it's added as a non-steam game. I haven't tested this much though so it may work fine with in-home streaming.
NOTE: If you are on x86 and not x64, you will have to change one thing.
This line:
if not RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Square Soft, Inc.\Final Fantasy VII", "DataDrive", "REG_SZ", $drive & "\") then ; write drive letter to registry
Should be changed to this:
if not RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Square Soft, Inc.\Final Fantasy VII", "DataDrive", "REG_SZ", $drive & "\") then ; write drive letter to registry
Download (Source code and compiled exe included):
https://www.dropbox.com/s/bk7ij7036b3l768/Launch_v0.1.rar?dl=0It should be placed in the main game directory, along with FF7DISC1.ISO and a "7thHeaven" folder containing 7th Heaven.