2011-05-19 112 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); 

     } 
    } 

} 
}