将office 2010安装exe包装到安装项目中?

时间:2011-05-19 21:00:10

标签: visual-studio-2008 setup-deployment office-2010

这很奇怪我知道但是这里是:我有10个左右的卫星办公室,我管理,我正在将软件安装滚动到配置免费/设置免费图像,以保持现场重新安装崩溃等,我的所有文件都是完成Office 2010安装除外。

我想做的是:

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

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

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

  4. 详细问题:

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

    现在我不是世界上最聪明的人,所以如果有另一种方法来自动安装零售办公套件并使用一些配置文件自动安装用户配置文件我就是为了它我只想要最少量的步骤现场尽可能。在我的解决方案中,安装程序选择名称然后在配置文件导入后必须输入密码并完成。作为附注,PRF文件中是否有设置密码(使用pop3帐户)和保存密码的设置?这会很好,但我相信没有。

    现在为了节省时间,这些都是与DC无关的独立小企业,每家公司都没有足够的许可证来进行开放式价值许可,我已经知道所有这些都可以使用Office自定义工具来创建一个prf来解决具有网络安装和登录脚本的文件。此外,我已经有系统的图像进行裸机恢复,这些安装适用于不需要重新安装完整系统的情况。

1 个答案:

答案 0 :(得分:0)

答案不在设置项目中,而是在旧式窗体中。我意识到:

  1. 我真的不需要安装项目来执行此操作。
  2. 可以将自定义process.start()与waitforexit()结合使用以获得所需的结果。
  3. 然后从那里继续。
  4. 那么无论如何这是我解决我的奇怪问题的方法,我刚刚发布了答案,以便如果其他人不得不做这样的事情他们就会有。

    示例:

    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);
    
            }
        }
    
    }
    }