0

これは私が知っている奇妙ですが、ここにあります:私は管理している10ほどのサテライトオフィスを持っており、クラッシュなどを再インストールするためにオンサイトに保持するために、ソフトウェアインストールを構成フリー/設定フリーイメージにロールバックしています. Office 2010 のインストール。

私がやろうとしていることはこれです:

  1. Office インストール EXE は、そのユーザーとすべてのキーを使用してサイレント インストールするように config.xml で設定されています。それはすべてのユーザー用の 1 つのディスクであり、キー名などにマスター xml ファイルを使用します。インストーラーは「ユーザー名を選択してください」という 1 つの質問をし、アプリケーションをインストールする人が次のボタンを押すと、プログラムはそのユーザーの値を文字列を取得し、それを office のインストール フォルダー内の config.xml に書き込み、インストールを開始します。

  2. Office のインストールが完了すると、Outlook プロファイルの prf ファイルが作成され、outlook.exe/importprf \yadda\yadda コマンドが実行されます。

  3. その後、アプリケーションは完了したと言って閉じます。

問題の詳細:

  • これは(私が思うに)非常に単純なはずですが、オフィスアプリケーションのインストールを監視して、完了したときにプロセスの次のステップをトリガーする方法がわかりません。そこでアプリケーションを終了し、最初の実行でレジストリキーを使用してコマンドを実行してプロファイルをインポートすることを考えましたが、可能であれば上記の方法でこれを機能させることができるかどうかを確認したいと思います。

今、私は地球上で最も賢い人ではないので、小売オフィススイートのインストールを自動化し、いくつかの構成ファイルを使用してユーザープロファイルを自動的にインストールする別の方法がある場合、私はそれですべてですオンサイトでの手順を最小限にしたいだけです可能。私のソリューションでは、インストーラーが名前を選択し、プロファイルのインポート後にパスワードを入力する必要があり、完了します。補足として、PRFファイルにはパスワードの設定(pop3アカウントを使用)とパスワードの保存の設定がありますか?それはいいことですが、そうではないことは確かです。

時間を節約するために、これらはすべて個別の DC を備えた個別の小規模企業であり、各企業は Open Value Licensing を行うのに十分なライセンスを持っていません。Office カスタマイズ ツールを使用して .prf ファイルを作成し、.ネットワーク インストールおよびログオン スクリプト。また、ベア メタルの復元を行うためのシステムのイメージが既にあります。これらのインストールは、システム全体の再インストールが不要な場合に使用します。

4

1 に答える 1

0

答えはセットアップ プロジェクトではなく、昔ながらの Windows フォームにあります。に気づいた:

  1. これを行うためのセットアップ プロジェクトは本当に必要ありませんでした。
  2. カスタム process.start() を waitforexit() と組み合わせて使用​​して、目的の結果を得ることができます。
  3. その後、そこから続けてください。

とにかく、それが私の奇妙な問題に対する私の解決策です。他の誰かがこのようなことをしなければならないように、答えを投稿しました。

例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Diagnostics;


namespace waitforexittesting
{
static class Program
{

    static void Main()
    {
        LaunchCommandLineApp();

    }

    static void LaunchCommandLineApp()
    {

        // Use ProcessStartInfo class
        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.CreateNoWindow = false;
        startInfo.UseShellExecute = false;
        startInfo.FileName = "C:\\googletalk.exe";
        startInfo.WindowStyle = ProcessWindowStyle.Hidden;

        try
        {
            // Start the process with the info specified.
            // Call WaitForExit and then the using statement will close.
            using (Process exeProcess = Process.Start(startInfo))
            {
                exeProcess.WaitForExit();
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }
        catch
        {
            // Log error.
            MessageBox.Show("The file could not be found.", 
         "My Application",MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk);

        }
    }

}
}
于 2011-05-20T16:30:37.613 に答える