问题
I have tried to make installation to my software, and this Software has some prerequisites. I made a Bootstrapper wix for them and trying to run them alone not in the Main Wix installer seems to work fine. The moment I tried to attach this EXE that I got from the Bootstrapper in my Wix Installer I start to get failures. The Prerequisites Bootstrapper has.Net and MS C++ and the problem seem to be when my Wix installer calls the Prerequisites and exactly at C++ installation it breaks. But if I tried to install the Prerequisites EXE alone it works fine. I tried to call it as a file and as a binary in both cases I fail. Here is how i called it :
<!-- <Binary Id="SQl_Insta.exe" SourceFile="Prerequisites\bin\Debug\Prerequisites.exe"/>
-->
<Property Id="prerequisites_insta" Value="command line to run"/>
<CustomAction Id="prerequisites_insta" FileKey="prerequist_ID" ExeCommand="-install"
Impersonate="yes" Return="check" />
<!--
<CustomAction Id="prerequisites_insta" Directory="Setup"
Execute="deferred" Impersonate="no" Return="ignore"
ExeCommand="[Setup]Prerequisites.exe -install" />-->
and the sequence that I want is to install them after copying files to Program files
<InstallExecuteSequence>
<Custom Action="prerequisites_insta" Before="InstallFiles">Not Installed</Custom>
</InstallExecuteSequence>
the error :
[18F0:04C0][2018-03-13T14:01:04]w348: Application requested retry of package: vcredist_x64.exe, encountered error: 0x80070652. Retrying... [173C:176C][2018-03-13T14:01:07]i301: Applying execute package: vcredist_x64.exe, action: Install, path: C:\ProgramData\Package Cache\13674C43652B941DAFD2049989AFCE63CB7C517B\vcredist_x64.exe, arguments: '"C:\ProgramData\Package Cache\13674C43652B941DAFD2049989AFCE63CB7C517B\vcredist_x64.exe" /qb /norestart' [173C:176C][2018-03-13T14:01:11]e000: Error 0x80070652: Process returned error: 0x652 [173C:176C][2018-03-13T14:01:11]e000: Error 0x80070652: Failed to execute EXE package. [18F0:04C0][2018-03-13T14:01:11]e000: Error 0x80070652: Failed to configure per-machine EXE package. [18F0:04C0][2018-03-13T14:01:11]w348: Application requested retry of package: vcredist_x64.exe, encountered error: 0x80070652. Retrying... [173C:176C][2018-03-13T14:01:14]i301: Applying execute package: vcredist_x64.exe, action: Install, path: C:\ProgramData\Package Cache\13674C43652B941DAFD2049989AFCE63CB7C517B\vcredist_x64.exe, arguments: '"C:\ProgramData\Package Cache\13674C43652B941DAFD2049989AFCE63CB7C517B\vcredist_x64.exe" /qb /norestart' [173C:176C][2018-03-13T14:01:17]e000: Error 0x80070652: Process returned error: 0x652 [173C:176C][2018-03-13T14:01:17]e000: Error 0x80070652: Failed to execute EXE package. [18F0:04C0][2018-03-13T14:01:17]e000: Error 0x80070652: Failed to configure per-machine EXE package. [18F0:04C0][2018-03-13T14:01:17]w348: Application requested retry of package: vcredist_x64.exe, encountered error: 0x80070652. Retrying... [173C:176C][2018-03-13T14:01:20]i301: Applying execute package: vcredist_x64.exe, action: Install, path: C:\ProgramData\Package Cache\13674C43652B941DAFD2049989AFCE63CB7C517B\vcredist_x64.exe, arguments: '"C:\ProgramData\Package
Cache\13674C43652B941DAFD2049989AFCE63CB7C517B\vcredist_x64.exe" /qb /norestart' [173C:176C][2018-03-13T14:01:24]e000: Error 0x80070652: Process returned error: 0x652 [173C:176C][2018-03-13T14:01:24]e000: Error 0x80070652: Failed to execute EXE package. [18F0:04C0][2018-03-13T14:01:24]e000: Error 0x80070652: Failed to configure per-machine EXE package. [18F0:04C0][2018-03-13T14:01:24]i319: Applied execute package: vcredist_x64.exe, result: 0x80070652, restart: None [18F0:04C0][2018-03-13T14:01:24]e000: Error 0x80070652: Failed to execute EXE package. [173C:176C][2018-03-13T14:01:24]i351: Removing cached package: vcredist_x64.exe, from path: C:\ProgramData\Package Cache\13674C43652B941DAFD2049989AFCE63CB7C517B\ [173C:176C][2018-03-13T14:01:24]i351: Removing cached package: NDP452_KB2901907_x86_x64_AllOS_ENU.exe, from path: C:\ProgramData\Package Cache\89F86F9522DC7A8A965FACCE839ABB790A285A63\ [173C:176C][2018-03-13T14:01:24]i351: Removing cached package: dotnetfx35.exe, from path: C:\ProgramData\Package Cache\3DCE66BAE0DD71284AC7A971BAED07030A186918\
[173C:176C][2018-03-13T14:01:24]i372: Session end, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall{a94dd5f5-3343-45c7- ab0b-17c3ba9e8644}, resume: None, restart: None, disable resume: No [173C:176C][2018-03-13T14:01:24]i330: Removed bundle dependency provider: {a94dd5f5-3343-45c7-ab0b-17c3ba9e8644} [173C:176C][2018-03-13T14:01:24]i352: Removing cached bundle: {a94dd5f5- 3343-45c7-ab0b-17c3ba9e8644}, from path: C:\ProgramData\Package Cache\ {a94dd5f5-3343-45c7-ab0b-17c3ba9e8644}\ [173C:176C][2018-03-13T14:01:24]i371: Updating session, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall{a94dd5f5-3343-45c7- ab0b-17c3ba9e8644}, resume: None, restart initiated: No, disable resume: No [18F0:04C0][2018-03-13T14:01:24]i399: Apply complete, result: 0x80070652, restart: None, ba requested restart: No
回答1:
That error 0x80070652 is "another installation is in progress". You cannot run recursive MSI install or simultaneous MSI installs - your MSI cannot call another MSI-based install, and neither can you run two MSI-based installs at the same time. It's hard to tell from the (partial?) log what MSI-based installed are happening at the same time.
回答2:
It is a little bit unclear if you made a WiX Burn bundle already? If you did, then you already have the solution: run the MSI files in sequence via your Burn bootstrapper and not in parallel or recursively using custom actions.
As already stated by Phil, Windows Installer allows only one InstallExecuteSequence
to run at a time. There is one such sequence in every MSI file - and a mutex is set every time one is triggered. This prevents other MSI files from starting another such sequence until the first one is done.
In technical terms this is done to allow all changes made to the system to be possible to roll back as a "change transaction" along the lines of what happens in a database transaction.
One of the key reasons to use a WiX Burn bootstrapper is to avoid this technical MSI problem. There are also other reasons such as to allow kicking off EXE files and other installable files that are not in MSI format. Here is a sample Burn project: https://github.com/frederiksen/Classic-WiX-Burn-Theme. And also: The official Burn documentation.
来源:https://stackoverflow.com/questions/49258206/wix-custom-action-sequence