3

私のソリューション用の.msiインストーラを作成するセットアップと展開プロジェクトがVisual Studio 2013にあります。また、カスタムアクションのインストールで起動するC#WinFormsアプリケーションもあります。ユーザーがコマンドラインから.msiを起動した場合、カスタムアクションのインストール中に実行されるコマンドライン引数をアプリケーションに渡す方法はありますか?カスタムアクションをインストールする.msi Argsを渡す

私はCustomActionDataパラメータを使用してInstall Custom Actionアプリの引数を提供できることを知っています。だから、何らかの.msi引数を何とか動的に設定できますか?または、これを行うより簡単な方法がありますか?

ご協力いただければ幸いです。

答えて

1

アプリにインストーラクラスを追加し、Installメソッドをオーバーライドすることができます。その後、Context.Parametersプロパティのコマンドラインパラメータにアクセスできます。

[RunInstaller(true)] 
public class CustomInstaller : System.Configuration.Install.Installer 
{ 
    public override void Install(IDictionary stateSaver) 
    { 
     base.Install(stateSaver); 
     //this.Context.Parameters contains the command line arguments 
    } 
} 

さらに詳しい情報はdocumentationにあります。

0

のようなもののように、それはあなたが "コマンドライン引数" によって何を意味するかによって異なりますが、私はあなたがプロパティ値を意味すると仮定します。MYPROP1 = THIS MYPROP2

ます。msiexec/I [あなたのmsiファイルへのパス] =

THAT

とし、MYPROP1とMYPROP2の値をカスタムアクションに渡したいとします。

したがって、実行ファイルをカスタムアクションとして追加するだけです。カスタムアクションのプロパティウィンドウには、引数設定があります。あなたがいることを与えた場合の値:

は[MYPROP1]; [MYPROP2]

これらは、実際の値に、インストール時に解決し、あなたのコマンドラインに渡されます。

/one = [MYPROP1]/two = [MYPROP2] など、コマンドラインで表示されるような形式を使用してください。

アプリケーションをEveryoneインストールからカスタムアクションとして実行することは、主にローカルシステムアカウントで実行されるため、インストールユーザーのフォルダ、データベース、ネットワークなどにアクセスできないため、必ずしも便利ではありません。何かを設定している場合は、アプリケーションを初めて実行するときに実行するほうがよいので、通常の対話的なユーザコンテキストで実行されます。

関連する問題