3

Windowsフォームアプリケーションとオフィスアドインを同時にインストールするためのinnoセットアップを準備しています。インストール中にすべての Windows フォーム ファイル (exe および dll) と Office アドイン展開ファイルを展開し、すべて正常に動作します。しかし、最後に、オフィスアドイン「setup.exe」がまだ実行されている間に、「インストールが完了しました」画面が表示されました。バックグラウンドで他のインストール済みの実行中またはポップアップが表示されることは気にしませんが、他のアプリケーションの実行中に inno セットアップが「終了」と表示されるのは好きではありません。

これは私のコードです:

[Run]
Filename: "{app}\AddIn\Deploy\setup.exe"; Flags: waituntilterminated runminimized 
Filename: "{app}\MyApp.exe"; Description: {cm:LaunchProgram,{cm:MyAppName}}; Flags: nowait postinstall 

それで、それは「runminimized」には従いませんが、とにかく私は大丈夫です....しかし、「waituntilterminated」にも従いません。

「AddIn\Deploy\setup.exe」は、Office アドインの「発行」ウィザードによって Visual Studio によって生成されたファイルであることに注意してください。

このコードのみを実行できれば幸いです。

[code]
function PrepareToInstall(var NeedsRestart: Boolean): String;
var
  ResultCode : Integer;
begin

  if Exec(ExpandConstant('{app}\AddIn\Deploy\setup.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
  begin
    Result := 'AddIn Installed';
  end
  else 
    Result := 'AddIn NOT Installed';

  NeedsRestart := false;
end;

しかし、メインの inno インストーラーがファイルを「AddIn\Deploy」ディレクトリにコピーした直後に実行する必要があります...したがって、オーバーライドする適切なイベントが必要になる場合があります。

4

1 に答える 1

4

送信したコードは、次のように拡張できます。

    [code]
    function PrepareToInstall(var NeedsRestart: Boolean): String;
    var
     ResultCode : Integer;
    begin
     // Your original line: 
     // if Exec(ExpandConstant('{app}\AddIn\Deploy\setup.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
     if Exec(AddQuotes(ExpandConstant('{app}\AddIn\Deploy\setup.exe')), AddQuotes(ExpandConstant('{app}\AddIn\Deploy\')), '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
      begin
       Result := 'AddIn Installed';
      end
     else
      begin // <== 
       Result := 'AddIn NOT Installed';
      end; // <==
     NeedsRestart := false;
    end;

{app} にはスペースが含まれている可能性があり、関数 AddQuotes は、文字列にスペースが含まれている場合、文字列の周りに引用符を作成します 私の意見では、exec 関数はショートカットのように機能するため、アプリケーションに作業ディレクトリを与えます。私はあなたの Setup.exe の性質を知らないので、アプリケーションが存在する場所と同じフォルダーを workingdir としてこのアプリケーションに与えました。

少し本題から外れたメモ: 最終バージョンでは SW_Hide を使用してください。SW_HIDE 以外の他のモードが選択されている場合、アプリケーションがアドインをインストールした場合の結果は常に表示されます:)

于 2013-11-19T10:15:50.997 に答える