2012-09-21 37 views
8

我正在使用Wix 3.6。我有一個問題,當卸載任何窗口打開並顯示在任務欄(此窗口是我試圖卸載的我的msi的一部分)時,它顯示一個對話框,要求用戶關閉應用程序(「在繼續安裝之前,應關閉以下應用程序「)。在卸載時關閉應用程序 - wix

我試了下面,但沒有運氣。

<InstallExecuteSequence> 
     <Custom Action="WixCloseApplications" 
       Before="InstallInitialize">Installed</Custom> 
     <Custom Action="StartMonitor" 
       After="StartServices">NOT Installed</Custom> 
    </InstallExecuteSequence> 

    <util:CloseApplication Id="CloseMonitor" Target="Monitor.exe" 
          CloseMessage="yes" RebootPrompt="no"> 
     Installed 
    </util:CloseApplication> 

我想讓wix檢測應用程序並將其作爲卸載過程的一部分關閉它們。不需要顯示對話框提示。任何人都可以請幫我實施它。

它工作正常,它通過/ qn開關從命令提示符安裝,但沒有/ qn開關我得到對話框(「在繼續安裝之前應關閉以下應用程序」)。 有人可以幫助我解決這個問題。

+2

我改變InstallInitialize到InstallValidate它能正常工作<自定義操作=「WixCloseApplications」 =之前」 InstallValidate「>安裝 –

回答

1

添加C#自定義事件,並添加使其第一次活動上InstallUISequence和使用下面的代碼殺死進程:

try 
{ 
     Process proc = Process.GetProcessesByName("MyApplication"); 
     proc.Kill(); 
} 
catch (Exception ex) 
{ 
     MessageBox.Show(ex.Message.ToString()); 
} 

如果烏拉圭回合的應用支持多個實例,再算上沒有。實例首先:

int count = 0; 
Process[] process = Process.GetProcessesByName("MyApplication"); 
foreach (Process pr in process) 
{ 
    if (pr.MainModule.FileName.Equals(Assembly.GetExecutingAssembly().Location,    StringComparison.OrdinalIgnoreCase)) 
    { 
     count++; 

    } 
} 

如果你是不是在所有使用和DllEntry然後按照這個link

+0

嗨感謝您的建議, –

+0

我被要求不要使用C#,所以沒有嘗試您的建議。 –

+0

請參閱wix具有非常少的內置操作或功能,因此您必須使用外部代碼。它可能是C#或任何其他語言。 –

相關問題