0

我知道这很奇怪,但它是这样的:我管理着大约 10 个卫星办公室,并且我正在将软件安装滚动到无配置/无设置图像以保留在现场以重新安装崩溃等,我的所有文件都已完成,除了Office 2010 安装。

我想做的是:

  1. Office 安装 EXE 已使用 config.xml 设置为使用该用户和所有用户的密钥进行静默安装。它是一张供所有用户使用的光盘,并使用主 xml 文件作为键名等,安装程序会问一个问题“选择用户名”,当安装应用程序的人点击下一步按钮时,程序会将该用户的值插入字符串并将其写入办公室安装文件夹中的 config.xml 并开始安装。

  2. 办公室安装完成后,它将为 Outlook 配置文件创建 prf 文件并运行 outlook.exe/importprf \yadda\yadda 命令。

  3. 然后应用程序会说它已完成并关闭。

详细问题:

  • 这(我认为)应该很简单,我不知道如何监控办公应用程序的安装,以便在安装完成后触发该过程的下一步。我想过在那里结束应用程序并使用注册表项首次运行来运行命令以导入配置文件,但我宁愿看看我是否可以让它按照我上面列出的方式工作,如果可能的话。

现在我不是地球上最聪明的人,所以如果有另一种方法可以自动安装零售办公套件并使用一些配置文件自动安装用户配置文件,我完全赞成,我只希望现场步骤最少可能的。在我的解决方案中,安装程序选择名称,然后在配置文件导入后必须输入密码并完成。作为旁注,PRF 文件中是否有密码设置(使用 pop3 帐户)和保存密码的设置?这会很好,但我敢肯定没有。

现在为了节省时间,这些都是没有 oa DC 的独立小型企业,每家公司都没有足够的许可证来进行开放式价值许可,我已经知道所有这些都可以使用 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 回答