2012-02-24 2 views
1

InnoSetupを使用してインストール作業を行っていますが、これはどのように正しく行うかわかりません。Innosetup、ベストプラクティスカスタムインストールを外部アプリケーションに渡す

状況は次のとおりです。 1つのテキストボックスとチェックボックスを持つ1つのinnosetupカスタムページ。基本的にtargeturlとwindows servicenameを含んでいます。もっと後であるかもしれない。 このカスタム情報は、2つの異なるapp.configファイルに渡す必要があります。

質問はどうなりましたか? 私の最初の目的は、[Run]セグメントを以下のようなパラメータの束と共に使用することでした: [Run] ファイル名:{app} \ MyApp.exe;パラメータ:/ install; Flags:runminimized

しかし、カスタムデータをアプリケーションに渡す方法はわかりません。

おそらく、環境変数を作成してそのようにデータを渡すことができますか? おそらく、必要な値を持つ一時ファイルを作成できますか? おそらく、インストール中にロードされたdllでこれを行うべきであり、インストール後ではないでしょうか?

ご意見をいただければ幸いです。

答えて

2

およびそれよりも大きい。 "@ DenverCoder9"の場合:

基本的に私がやったことは、Inno-setupのバンドルされた例のほとんどの行です。 Inno-setupが(MSXMLを介した)XML操作を可能にするという事実を見逃しました。これにより、次のことが可能になりました: にはサンプル構成ファイル(app.config.sample)が含まれています。 サンプル構成ファイル をロードし、カスタムフォームから収集したデータを使用して変更します。 正しい場所に保存してください。

[Files] 
... 
Source: ..\UpdateService\UpdateService\Server\bin\Release\UpdateService.exe.config; DestDir: {app}; Permissions: users-modify; Flags: comparetimestamp onlyifdoesntexist; AfterInstall: MyAfterInstall; 


[Code] 
procedure MyAfterInstall(); 
var XMLDoc : Variant; 
var RootNode : Variant; 
begin 
// if(FLAG_UPDATE_SERVICE_CONFIG) then begin 
    XMLDoc := CreateOleObject('MSXML2.DOMDocument'); 
    XMLDoc.async := False; 
    XMLDoc.resolveExternals := False; 
    XMLDoc.load(ExpandConstant(CurrentFilename)); 
    RootNode := XMLDoc.documentElement; 
    ... 
    end; 
end; 

これは、手作業でアプリケーションを変更する必要がある人に提供するサンプルファイルが追加されているという利点があります。

1

Inno Setupインストーラで入力した値を外部アプリケーションに渡すためにコマンドライン引数を使用できませんか?

外部アプリケーション(.NETと仮定します)は、コマンドラインから設定ファイル(「App.config」など)への値の書き込みを処理できます。 .NETアプリケーションのMain(string[] args)メソッドは、コマンドライン引数の値を調べることができます。提案したとおりに[Run]セクションを使用し、これらの値をパラメータとして渡します(Parametersを使用)。

+0

こんにちは。ありがとうございました。私はそれについて考えましたが、技術的ではないスタッフ(コマンドラインは怖いです)をインストールに対応させたいと考えています。だから私はインストールプロセスでデータを収集したいと思っています。 – lungic

+0

あなたは既にあなたに「フレンドリーな」方法であるカスタムページがあると言っています。 @lungicは、これをコマンドラインや設定ファイルであなたのアプリに渡すことができます。 – Deanna

関連する問題