0

我有一个用于安装 Excel 插件的 MSI。

到目前为止,此 MSI 已在许多机器上正常工作(运行 Windows 7、Windows Vista 或 Windows XP 的 64 位和 32 位机器),但最近一个用户的启动条件错误地失败了。

MSI 是在 32 位 Windows XP 机器上使用 Visual Studio 2010 安装程序项目准备的。

用户正在尝试将其安装在安装了 Excel 2007 SP2(32 位)的 Windows 7 64 位计算机上。

启动条件是确定当前安装的 Excel 版本。为了这:

  1. 我有一个带有以下参数的注册表搜索操作

    Property: EXCEL
    RegKeY: Software\Classes\Excel.Application\CurVer
    Root: vsdrrHKLM
    Value: 
    
  2. 发射条件是EXCEL = "Excel.Application.12" OR EXCEL = "Excel.Application.14"

在用户的机器上,我已经确认:

  1. 'HKLM\Software\Classes\Excel.Application\CurVer' 的注册表值为 'Excel.Application.12'
  2. msi 日志表明该值已正确读取

日志如下所示:

Action 15:42:58: ProgressForm. Dialog created
Action ended 15:42:58: ProgressForm. Return value 1.
MSI (c) (AC:28) [15:42:58:401]: Doing action: ExecuteAction
Action 15:42:58: ExecuteAction. 
Action start 15:42:58: ExecuteAction.
MSI (c) (AC:28) [15:42:58:410]: PROPERTY CHANGE: Adding SECONDSEQUENCE property. Its value is '1'.
MSI (c) (AC:28) [15:42:58:413]: Grabbed execution mutex.
MSI (c) (AC:28) [15:42:58:416]: Incrementing counter to disable shutdown. Counter after increment: 0
MSI (c) (AC:28) [15:42:58:419]: Switching to server: TARGETDIR="C:\Program Files (x86)\MySoftware\" _F6F7C451BA1841F0B59F5BF6C3620B2B="C:\Program Files (x86)\MySoftware\Data\" _B87F203625174B9894BB9AAD7BBA6EAB="C:\Program Files (x86)\MySoftware\Bin\" _6448E393C853494F8BBDC9D2FA0DA440="C:\ProgramData\Microsoft\Windows\Start Menu\Programs\MyCompany\" _BA6D696DE1324CDF936304F630FC10AD="C:\ProgramData\Microsoft\Windows\Start Menu\Programs\MyCompany\MySoftware\" _77B6D7C007D440959AF59826EEB28541="C:\Program Files (x86)\MySoftware\Data\LOGS\" _4AE2CF68991D4AADBC1984A3B6A685D2="C:\Program Files (x86)\MySoftware\Data\DB\" _0E7ED596C9F747DB961B97EBE7D8CA47="C:\Program Files (x86)\MySoftware\Doc\" EXCEL2007="C:\Program Files (x86)\Microsoft Office\Office12\" EXCEL="Excel.Application.12" VSDNETURLMSG="This setup requires the .NET Framework version 2.0.  Please install the .NET Framework and run this setup again.  The .NET Fram
MSI (s) (74:78) [15:42:58:430]: Running installation inside multi-package transaction H:\MySoftware\MySoftware.msi
MSI (s) (74:78) [15:42:58:433]: Grabbed execution mutex.
MSI (s) (74:F8) [15:42:58:439]: Resetting cached policy values
MSI (s) (74:F8) [15:42:58:442]: Machine policy value 'Debug' is 0
MSI (s) (74:F8) [15:42:58:444]: ******* RunEngine:
           ******* Product: H:\MySoftware\MySoftware.msi
           ******* Action: INSTALL
           ******* CommandLine: **********
//A lot of other stuff

MSI (s) (74:F8) [15:43:10:824]: Doing action: AppSearch
Action 15:43:10: AppSearch. Searching for installed applications
Action start 15:43:10: AppSearch.
MSI (s) (74:F8) [15:43:10:838]: Skipping AppSearch action: already done on client side
Action ended 15:43:10: AppSearch. Return value 0.
MSI (s) (74:F8) [15:43:10:844]: Doing action: FindRelatedProducts
Action 15:43:10: FindRelatedProducts. Searching for related applications
Action start 15:43:10: FindRelatedProducts.
MSI (s) (74:F8) [15:43:10:855]: Skipping FindRelatedProducts action: already done on client side
Action ended 15:43:10: FindRelatedProducts. Return value 0.
MSI (s) (74:F8) [15:43:10:861]: Skipping action: ERRCA_CANCELNEWERVERSION (condition is false)
MSI (s) (74:F8) [15:43:10:866]: Doing action: VSDCA_VsdLaunchConditions
Action 15:43:10: VSDCA_VsdLaunchConditions. 
Action start 15:43:10: VSDCA_VsdLaunchConditions.
MSI (s) (74:F8) [15:43:10:890]: Creating MSIHANDLE (27) of type 790542 for thread 4344
MSI (s) (74:E0) [15:43:10:893]: Invoking remote custom action. DLL: C:\Windows\Installer\MSI9C72.tmp, Entrypoint: VsdLaunchConditions
MSI (s) (74!34) [15:43:11:441]: Creating MSIHANDLE (28) of type 790531 for thread 6708
INFO   : [10/25/2012 15:43:11:445] [VsdLaunchConditions                     ]: Custom Action is starting...
INFO   : [10/25/2012 15:43:11:451] [VsdLaunchConditions                     ]: CoInitializeEx - COM initialization Apartment Threaded...
INFO   : [10/25/2012 15:43:11:456] [VsdLaunchConditions                     ]: Enumerating table using SQL statement: 'SELECT * FROM `_VsdLaunchCondition`'
INFO   : [10/25/2012 15:43:11:460] [VsdLaunchConditions                     ]: Calling MsiGetActiveDatabase...
MSI (s) (74!34) [15:43:11:464]: Creating MSIHANDLE (29) of type 790541 for thread 6708
INFO   : [10/25/2012 15:43:11:467] [VsdLaunchConditions                     ]: MsiDatabaseOpenViewW - Prepare Database to view table...
MSI (s) (74!34) [15:43:11:471]: Creating MSIHANDLE (30) of type 790540 for thread 6708
INFO   : [10/25/2012 15:43:11:474] [VsdLaunchConditions                     ]: TMsiViewExecute - Open Database view on table...
MSI (s) (74!34) [15:43:11:478]: Creating MSIHANDLE (31) of type 790531 for thread 6708
INFO   : [10/25/2012 15:43:11:482] [VsdLaunchConditions                     ]: Checking a launch condition...
INFO   : [10/25/2012 15:43:11:485] [VsdLaunchConditions                     ]: Getting the condition to evaluate...
INFO   : [10/25/2012 15:43:11:489] [VsdLaunchConditions                     ]: MsiRecordGetStringW - Fetching value...
INFO   : [10/25/2012 15:43:11:492] [VsdLaunchConditions                     ]: MsiRecordGetStringW - Getting value from column '1'...
INFO   : [10/25/2012 15:43:11:497] [VsdLaunchConditions                     ]: Evaluating condition 'VSDFXAvailable'...
INFO   : [10/25/2012 15:43:11:500] [VsdLaunchConditions                     ]: RESULT:  Condition is true. Nothing more to do.
MSI (s) (74!34) [15:43:11:504]: Closing MSIHANDLE (31) of type 790531 for thread 6708
MSI (s) (74!34) [15:43:11:508]: Closing MSIHANDLE (30) of type 790540 for thread 6708
INFO   : [10/25/2012 15:43:11:512] [VsdLaunchConditions                     ]: Custom Action succeeded.
INFO   : [10/25/2012 15:43:11:518] [VsdLaunchConditions                     ]: Custom Action completed with return code: '0'
MSI (s) (74!34) [15:43:11:522]: Closing MSIHANDLE (29) of type 790541 for thread 6708
MSI (s) (74!34) [15:43:11:525]: Closing MSIHANDLE (28) of type 790531 for thread 6708
MSI (s) (74:E0) [15:43:11:530]: Closing MSIHANDLE (27) of type 790542 for thread 4344
Action ended 15:43:11: VSDCA_VsdLaunchConditions. Return value 1.
MSI (s) (74:F8) [15:43:11:538]: Doing action: LaunchConditions
Action 15:43:11: LaunchConditions. Evaluating launch conditions
//Few more lines

Action ended 15:43:13: LaunchConditions. Return value 3.
Action ended 15:43:13: INSTALL. Return value 3.
//some other traces

MSI (c) (AC:04) [15:43:16:896]: Custom Action Manager thread ending.
Property(C): UpgradeCode = {9FC0F443-EECC-4C3B-939E-D033349C22BA}
Property(C): TARGETDIR = C:\Program Files (x86)\MySoftware
Property(C): _F6F7C451BA1841F0B59F5BF6C3620B2B = C:\Program Files (x86)\MySoftware\Data\
Property(C): _B87F203625174B9894BB9AAD7BBA6EAB = C:\Program Files (x86)\MySoftware\Bin\
Property(C): ProgramMenuFolder = C:\ProgramData\Microsoft\Windows\Start Menu\Programs\
Property(C): _6448E393C853494F8BBDC9D2FA0DA440 = C:\ProgramData\Microsoft\Windows\Start Menu\Programs\MySoftware\
Property(C): _BA6D696DE1324CDF936304F630FC10AD = C:\ProgramData\Microsoft\Windows\Start Menu\Programs\MySoftware\
Property(C): WindowsFolder = C:\Windows\
Property(C): SystemFolder = C:\Windows\SysWOW64\
Property(C): SourceDir = H:\MySoftware\
Property(C): _77B6D7C007D440959AF59826EEB28541 = C:\Program Files (x86)\MySoftware\Data\LOGS\
Property(C): _4AE2CF68991D4AADBC1984A3B6A685D2 = C:\Program Files (x86)\MySoftware\Data\DB\
Property(C): _0E7ED596C9F747DB961B97EBE7D8CA47 = C:\Program Files (x86)\MySoftware\Doc\
Property(C): VSDFXAvailable = TRUE
Property(C): VSDFrameworkVersion = v2.0
Property(C): VSDAllowLaterFrameworkVersions = False
Property(C): EXCEL2007 = C:\Program Files (x86)\Microsoft Office\Office12\
Property(C): EXCEL = Excel.Application.12
Property(C): ProductName = MySoftware
Property(C): ProductCode = {04835711-7FDB-4B00-9A39-6C6776D9900A}
Property(C): ProductVersion = 1.31.2012
Property(C): Manufacturer = MyCompany
Property(C): ARPHELPLINK = http://www.MyCompany.com/
Property(C): ARPCONTACT = MyCompany
Property(C): ARPURLINFOABOUT = http://www.MyCompany.com/
Property(C): ProductLanguage = 1033
Property(C): SecureCustomProperties = PREVIOUSVERSIONSINSTALLED;NEWERPRODUCTFOUND
Property(C): RedirectedDllSupport = 2
Property(C): VersionNT = 601
Property(C): VSDNETURLMSG = This setup requires the .NET Framework version 2.0.  Please install the .NET Framework and run this setup again.  The .NET Framework can be obtained from the web.  Would you like to do this now?
Property(C): VSDIISMSG = This setup requires Internet Information Server 5.1 or higher and Windows XP or higher.  This setup cannot be installed on Windows 2000.  Please install Internet Information Server or a newer operating system and run this setup again.
Property(C): VSDUIANDADVERTISED = This advertised application will not be installed because it might be unsafe. Contact your administrator to change the installation user interface option of the package to basic.
Property(C): VSDNETMSG = This setup requires the .NET Framework version 2.0.  Please install the .NET Framework and run this setup again.
Property(C): VSDINVALIDURLMSG = The specified path '[2]' is unavailable. The Internet Information Server might not be running or the path exists and is redirected to another machine. Please check the status of this virtual directory in the Internet Services Manager.
Property(C): VSDVERSIONMSG = Unable to install because a newer version of this product is already installed.
Property(C): FolderForm_AllUsers = ALL
Property(C): FolderForm_AllUsersVisible = 1
Property(C): DefaultUIFont = VsdDefaultUIFont.524F4245_5254_5341_4C45_534153783400
Property(C): MaintenanceForm_Action = Repair
Property(C): AdminMaintenanceForm_Action = Repair
Property(C): ErrorDialog = ErrorDialog
Property(C): SFF_UpFldrBtn = UpFldrBtn
Property(C): SFF_NewFldrBtn = NewFldrBtn
Property(C): WelcomeForm_NextArgs = FolderForm
Property(C): FolderForm_PrevArgs = WelcomeForm
Property(C): FolderForm_NextArgs = ConfirmInstallForm
Property(C): ConfirmInstallForm_PrevArgs = FolderForm
Property(C): AdminWelcomeForm_NextArgs = AdminFolderForm
Property(C): AdminFolderForm_PrevArgs = AdminWelcomeForm
Property(C): AdminFolderForm_NextArgs = AdminConfirmInstallForm
Property(C): AdminConfirmInstallForm_PrevArgs = AdminFolderForm
Property(C): WindowsFolder_x86_VC.F1DD796A_B984_3DCA_A68D_6B352BDC86F3 = C:\Windows\
Property(C): SystemFolder_x86_VC.F1DD796A_B984_3DCA_A68D_6B352BDC86F3 = C:\Windows\SysWOW64\
Property(C): ALLUSERS = 2
Property(C): DirectoryTable100_x86.F1DD796A_B984_3DCA_A68D_6B352BDC86F3 = DirectoryTable
Property(C): MsiLogFileLocation = H:\MySoftware\.\msilog.txt
Property(C): PackageCode = {ABF9C77A-61D2-49AF-BD7F-F55CE2567525}
Property(C): ProductState = -1
Property(C): PackagecodeChanging = 1
Property(C): RestrictedUserControl = 1
Property(C): CURRENTDIRECTORY = H:\MySoftware
Property(C): CLIENTUILEVEL = 0
Property(C): CLIENTPROCESSID = 7340
Property(C): VersionDatabase = 200
Property(C): VersionMsi = 5.00
Property(C): VersionNT64 = 601
Property(C): WindowsBuild = 7601
Property(C): ServicePackLevel = 1
Property(C): ServicePackLevelMinor = 0
Property(C): MsiNTProductType = 1
Property(C): WindowsVolume = C:\
Property(C): System64Folder = C:\Windows\system32\
Property(C): RemoteAdminTS = 1
Property(C): TempFolder = C:\Users\U060597\AppData\Local\Temp\
Property(C): ProgramFilesFolder = C:\Program Files (x86)\
Property(C): CommonFilesFolder = C:\Program Files (x86)\Common Files\
Property(C): ProgramFiles64Folder = C:\Program Files\
Property(C): CommonFiles64Folder = C:\Program Files\Common Files\
Property(C): AppDataFolder = C:\Users\U060597\AppData\Roaming\
Property(C): FavoritesFolder = C:\Users\U060597\Favorites\
Property(C): NetHoodFolder = C:\Users\U060597\AppData\Roaming\Microsoft\Windows\Network Shortcuts\
Property(C): PersonalFolder = C:\
Property(C): PrintHoodFolder = C:\Users\U060597\AppData\Roaming\Microsoft\Windows\Printer Shortcuts\
Property(C): RecentFolder = C:\Users\U060597\AppData\Roaming\Microsoft\Windows\Recent\
Property(C): SendToFolder = C:\Users\U060597\AppData\Roaming\Microsoft\Windows\SendTo\
Property(C): TemplateFolder = C:\ProgramData\Microsoft\Windows\Templates\
Property(C): CommonAppDataFolder = C:\ProgramData\
Property(C): LocalAppDataFolder = C:\Users\U060597\AppData\Local\
Property(C): MyPicturesFolder = C:\My Pictures\
Property(C): AdminToolsFolder = C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\
Property(C): StartupFolder = C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\
Property(C): StartMenuFolder = C:\ProgramData\Microsoft\Windows\Start Menu\
Property(C): DesktopFolder = C:\Users\Public\Desktop\
Property(C): FontsFolder = C:\Windows\Fonts\
Property(C): GPTSupport = 1
Property(C): OLEAdvtSupport = 1
Property(C): ShellAdvtSupport = 1
Property(C): MsiAMD64 = 6
Property(C): Msix64 = 6
Property(C): Intel = 6
Property(C): PhysicalMemory = 12279
Property(C): VirtualMemory = 18474
Property(C): LogonUser = u060597
Property(C): UserSID = S-1-5-21-1715567821-1004336348-725345543-486654
Property(C): UserLanguageID = 2057
Property(C): ComputerName = WR8DW1T3
Property(C): SystemLanguageID = 2057
Property(C): ScreenX = 1920
Property(C): ScreenY = 1080
Property(C): CaptionHeight = 22
Property(C): BorderTop = 1
Property(C): BorderSide = 1
Property(C): TextHeight = 16
Property(C): TextInternalLeading = 3
Property(C): ColorBits = 32
Property(C): TTCSupport = 1
Property(C): Time = 15:43:17
Property(C): Date = 25/10/2012
Property(C): MsiNetAssemblySupport = 4.0.30319.1
Property(C): MsiWin32AssemblySupport = 6.1.7601.17514
Property(C): AdminUser = 1
Property(C): MsiRunningElevated = 1
Property(C): Privileged = 1
Property(C): USERNAME = user
Property(C): COMPANYNAME = UserCompany
Property(C): DATABASE = C:\Users\U060597\AppData\Local\Temp\5c64805.msi
Property(C): OriginalDatabase = H:\MySoftware\MySoftware.msi
Property(C): SOURCEDIR = H:\MySoftware\
Property(C): VersionHandler = 5.00
Property(C): UILevel = 5
Property(C): ACTION = INSTALL
Property(C): EXECUTEACTION = INSTALL
Property(C): VSDFxConfigFile = C:\Users\U060597\AppData\Local\Temp\CFG4C2A.tmp
Property(C): ROOTDRIVE = C:\
Property(C): CostingComplete = 1
Property(C): OutOfDiskSpace = 0
Property(C): OutOfNoRbDiskSpace = 0
Property(C): PrimaryVolumeSpaceAvailable = 0
Property(C): PrimaryVolumeSpaceRequired = 0
Property(C): PrimaryVolumeSpaceRemaining = 0
Property(C): INSTALLLEVEL = 1
=== Logging stopped: 25/10/2012  15:43:17 ===

从上面的日志可以看出,属性“EXCEL”设置正确,但启动条件仍然失败。MSI 也以提升的权限运行。

有谁知道这里可能出了什么问题?我对部署世界相当陌生,非常感谢这方面的任何帮助

4

1 回答 1

2

如果没有看到整个日志,很难说 100%,但似乎发生在我身上的事情:

1)您开始安装并通过对话框。

2) 安装程序开始安装并抛出有关 excel 的错误消息。

3) 安装程序退出。

LaunchConditions 标准操作计划用于安装 UI 序列和安装执行序列。当 UI 运行时,会触发 AppSearch 操作并设置属性。

但是,EXCEL 属性未列在 SecureCustomProperties 属性中。因此,当安装程序切换执行序列时,该值变为空。Windows 安装程序不会在执行序列中再次运行 AppSearch 操作,因此它保持为空。

但是,运行 LaunchConditions 标准操作并且表达式评估为假中止安装。

可以通过阅读整个日志文件并注意动作何时触发来证明这一理论。测试该理论的另一种方法是从提升的命令提示符运行 MSI。在这种情况下,SecureCustomProperties 不起作用,InstallUI 中设置的属性将延续到 InstallExecute 序列。

最后,应该指出的是,老实说,Visual Studio 部署项目是可怕的。以至于微软从 Visual Studio 2012 中删除了它们。我将停止在这个工具上投入更多的时间,而改用 Windows Installer XML 或 InstallShield Limited Edition。

于 2012-10-26T12:47:23.230 回答