2014-01-20 80 views
3

我遇到安裝程序的問題,只有在計算機上存在以前的版本時纔會發生。使用WiX工具集創建安裝程序。 如果以前的版本存在,我的安裝程序會成功卸載它,但會提前結束。如果再次啓動安裝沒有問題。如果以前的版本沒有成功安裝。WIX安裝程序卸載,但不安裝,如果安裝了以前的版本

日誌文件以以下行結束 產品:xxxxx - 安裝失敗。 (c)(AC:3C)[22:53:59:388]:Windows Installer安裝了該產品。產品名稱:xxxxx。產品版本:1.2.0.0。產品語言:1033.製造商:xxxxx xxx。安裝成功或錯誤狀態:1603.

MSI (c) (AC:3C) [22:53:59:389]: Grabbed execution mutex. 
MSI (c) (AC:3C) [22:53:59:389]: Cleaning up uninstalled install packages, if any exist 
MSI (c) (AC:3C) [22:53:59:393]: MainEngineThread is returning 1603 
MSI (c) (AC:80) [22:53:59:400]: RESTART MANAGER: Previously shut down applications have  been restarted. 
MSI (c) (AC:80) [22:53:59:401]: RESTART MANAGER: Session closed. 

日誌文件很大。有一些可疑的線如

DEBUG: Error 2911: Could not remove the folder C:\Config.Msi\. 
The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2911. The arguments are: C:\Config.Msi\, , 

有沒有這樣的目錄。

查看日誌文件我有一種感覺,安裝程序在卸載後不會啓動,而是嘗試啓動應用程序,該應用程序在安裝後設置爲自動運行。這返回錯誤1603

MSI (s) (2C:08) [22:53:51:928]: PROPERTY CHANGE: Deleting UpdateStarted property. Its current value is '1'. 
Action ended 22:53:51: InstallFinalize. Return value 1. 
MSI (s) (2C:08) [22:53:51:929]: Doing action: LaunchApplication 
MSI (s) (2C:08) [22:53:51:929]: Note: 1: 2205 2: 3: ActionText 
Action 22:53:51: LaunchApplication. 
Action start 22:53:51: LaunchApplication. 
MSI (s) (2C:F8) [22:53:51:931]: Invoking remote custom action. DLL: C:\WINDOWS\Installer\MSI87DC.tmp, Entrypoint: WixShellExec 
MSI (s) (2C:DC) [22:53:51:931]: Generating random cookie. 
MSI (s) (2C:DC) [22:53:51:932]: Created Custom Action Server with PID 8100 (0x1FA4). 
MSI (s) (2C:00) [22:53:51:947]: Running as a service. 
MSI (s) (2C:00) [22:53:51:948]: Hello, I'm your 32bit Impersonated custom action server. 
WixShellExec: Error 0x80070002: ShellExec failed with return code 2 
WixShellExec: Error 0x80070002: failed to launch target 
CustomAction LaunchApplication returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox) 
Action ended 22:53:51: LaunchApplication. Return value 3. 
Action ended 22:53:51: INSTALL. Return value 3. 

任何幫助表示讚賞。任何想法在我的情況下在日誌文件中尋找什麼。

+0

看到你的「」(如何調度RemoveExistingProducts和你的'LaunchApplication'自定義動作)和''本身會很有趣。 – wimh

回答

2

我想我找到了正在發生的事情。在我以前的安裝我用了一個自定義操作這樣

<CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes"/> 
    <InstallExecuteSequence> 
    <Custom Action="LaunchApplication" After="InstallFinalize"/> 
    </InstallExecuteSequence> 

安裝後運行程序!我應該使用條件未安裝僅在安裝時運行此操作,但不能在卸載過程中運行此操作。像這樣

<CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes"/> 
<InstallExecuteSequence> 
    <Custom Action="LaunchApplication" After="InstallFinalize">NOT Installed</Custom> 
</InstallExecuteSequence> 

如果我在以前的版本中使用它,我現在不會有這個問題。

相關問題