2011-05-19 136 views
0

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

我所试图做的是这样的:

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

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

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

详细的问题:

  • 这个(我认为)应该是很简单的,我不知道如何监控安装的Office应用程序,这样,当它完成它触发下一步的过程。我想结束在那里的应用程序,并使用注册表键第一次运行命令来导入配置文件,但我宁愿看看我是否可以得到这个工作方式,我已经在上面布置,如果可能的话。

现在我不是地球上最聪明的人,所以如果有另一种方式来自动化安装零售办公套件,并自动安装的用户使用一些配置文件我完全赞成,我只是想最少量曲线尽可能在现场采取措施。在我的解决方案中,安装程序选择名称,然后在配置文件导入后输入密码并完成。作为附注,PRF文件中是否有设置密码(使用pop3帐户)和保存密码的设置?这将是很好,但我相信没有。

现在为了节省时间,这些都是独立的小型企业(不包括华盛顿特区),并且每家公司没有足够的许可证来执行开放式价值授权,我已经知道使用Office自定义工具可以解决所有这些问题,以创建带有网络安装和登录脚本的prf文件。此外,我已经有系统的图像进行裸机恢复,这些安装适用于无需完整系统重新安装的情况。

回答

0

答案不是在安装项目中,而是以老式的窗体形式。我意识到:

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

     } 
    } 

} 
}