2017-08-17 7 views
0

私がしようとしているのは、私たちの会社が使いたいスキャナを選択してボタンをクリックしてインストールすることを可能にする特定のスキャナ用のmsiインストーラを埋め込むことです。ドライバ。プロセスの引数を埋め込むMSIを呼び出す

private void MSIexec(string arguments)//Run MSIexec = MSIexec("Enter Command"); 
    { 

     Process process = new Process(); 
     process.StartInfo.FileName = @"C:\Windows\System32\msiexec.exe"; 
     process.StartInfo.Arguments = arguments; 
     process.Start(); 

これは、私は、プロセスプラス彼らは、メニュー項目を通して選択MSIをインストールするには、対応する引数を実行するコマンドのmsiexec(ここでは引数)で作成したプロセスです。 Visual Studio 2012 WPF Projectにリソースとしてmsiインストーラを追加し、埋め込みに設定しました。私はプロセスをテストし、それが動作しインストーラは完全なパス名をインストーラに入力するとコマンドと引数で動作します。私は最終的にコンパイルされたEXEでインストーラをインクルードしようとしているので、ユーザーはexeを実行してインストールをクリックしてドライバをインストールするのに必要なファイルをダウンロードする必要はありません。特定のフォルダはexeを実行して移動します。

主な質問は、引数を介して埋め込みmsiを呼び出すことができますか、引数を呼び出すために別の場所に読み込む必要がありますか。テストを通して、またはexeが準備ができたら、プログラムはこれらのファイルを(C:\ Temp)に保存しますか?これが正しいフォルダであれば、インストーラでパスが変更されないことを引数で参照することができます。

ご協力いただきありがとうございます。あなたは、いくつかの安全な場所に実行可能ファイルのリソースからMSIファイルを抽出して、MSIは、そこからインストールを開始する必要があります

tmitcham

答えて

1

。それはおそらく修理やその他、このようなメンテナンス操作の場合に必要となりますので、それはどこか安全な格納されている必要があり、そうすべきでない

https://www.codeproject.com/Articles/4221/Adding-and-extracting-binary-resources

How can I self-extract a binary resource (executable) using C++?

:それはこの種のものになるだろう捨てる。

msiexec.exeの呼び出しでは気にしません。 P/Invokeするのが簡単な完全に優れたAPI MsiInstallProduct()があります。

https://msdn.microsoft.com/en-us/library/windows/desktop/aa370315(v=vs.85).aspx

http://www.pinvoke.net/default.aspx/msi.msiinstallproduct

+0

これを読んで、その後、それは私が動作するようにコードを得たので、私は他の事を考えさせられました。私はディレクトリが存在するかどうかを確認するためにチェックして、directoyを作成し、その場所にリソースをエクスポートしてプロセスを実行し、プログラムが閉じるとディレクトリと内容を削除します。 – tmitcham

関連する問題