Inno Setup インストーラーを作成しましたが、最終ステップで問題が発生しています。
[Run]
最初は、(セクションから) 完了時にバッチ ファイルを実行したいと考えていました。このバッチ ファイルは、yajsw
サービスを開始し、 java.exe
.
バッチ ファイルをjava.exe
ローカルのパスに追加したり、system32
. これは、Java が になくsysWOW64
、64 ビット マシン上にあることに関係があるのではないかと考えました。
とにかく、いくつかの要件が変更されたため、適切なフォルダー (複数のバッチ ファイルがある) で のインスタンスを開き、explorer.exe
どのフォルダーを使用するかを指示するだけになりました。(または)を使用して、 CurStepChanged()
when curStep
isでこれを行います。このエクスプローラー ウィンドウからこれらのバッチ ファイルをダブルクリックしても、認識されないという同じ問題があるようですが、手動でエクスプローラー ウィンドウを開くと問題なく動作します。ssDone
Exec()
ShellExec
java.exe
PrivilegesRequired=admin
問題があるかどうかはわかりませんが、私が使用しているテスト マシンは Windows Server 2008 を実行していShellExec()
ます。Exec()
EnableFsRedirection(False)
どんなアイデアも役に立ちます、ありがとう!
編集:バッチファイルを直接呼び出すのではなく、含まれているフォルダーを開こうとしているだけなので:
[Setup]
AppId={{264F5847-C34C-4DB1-9EBF-F4D730D7E846}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName=C:\TestInstall
DisableDirPage=yes
DefaultGroupName=foo
DisableProgramGroupPage=yes
OutputDir=C:\Project\installer
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
UninstallFilesDir={code:InstallPath}
SetupIconFile=foo.ico
UninstallIconFile=foo.ico
SetupLogging=yes
...snip...
[Code]
...snip...
procedure CurStepChanged(CurStep: TSetupStep);
var
ResultCode: Integer;
cmd : String;
begin
if CurStep = ssDone then
begin
cmd := 'explorer.exe';
ShellExec('', cmd, InstallPath('') + '\server', '', SW_SHOW, ewNoWait, ResultCode);
end;
end;
ディレクトリ内のバッチファイルは次のInstallpath\server\
とおりです(基本的に...すべてJavaを使用するバッチファイルがいくつかあります):
java.exe {various params}
基本的に、私が持っているだけでもjava.exe
、完全にパスするか、ローカルにパスに追加するかに関係なく、Innoが起動するエクスプローラーウィンドウでは機能しませんが、別のものを手動で開くと機能します.
ありがとう!