Reputation: 443
I have a setup created that installs an application, and still does, but it started giving a strange warning at the end out of the blue. So, when the installation process finishes, the following appears:
The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2810.
So I checked 2810, and it says:
On the dialog [2] the next control pointers do not form a cycle. There is a pointer from both [3] and [5] to [4].
I was not changing anything in the "User interface" or "Custom actions" so this came unexpected. Also the installation completes if you just click ok and everything works fine, it just doesn't look good from a user perspective. Any help or similar issues encountered?
Upvotes: 4
Views: 2125
Reputation: 71
(combining comments into an actual solution)
If you're using the common script EnableLaunchApplication.js within a Visual Studio Installer project, then the 2810 error code is most likely caused by a single line within that script, along with a recent Visual Studio update.
The fix, as mentioned by user Olaf:
in the EnableLaunchApplication.js I changed the line INSERT INTO 'Control' ... and replaced the value 'CloseButton' with 'Line1'. – Olaf Jan 9 at 14:16
With the entire corrected script linked by user Shangwu:
Here is the latest JavaScript without causing error 2810. stackoverflow.com/a/59888956/6079057 – Shangwu Jan 24 at 0:49
The underlying reason can be found in answers by Adam cosby and Stein Åsmul.
Upvotes: 2
Reputation: 1
I actually had the same problem and my Control Table was over populated just as you mentioned above. I beleive it was related or at least co-incided with the Visual Studio update from 16.3 to 16.4.2. For me I used the Visual Studio Installer too and on the older version of VS it compiles fine but the same commit number on a different machine with the new version it causes the same issue and the Control Table has a lot more Control_Next entries populated. Still not sure how to fix yet though in the source.
Edit: Ok I discovered the problem. The issue with it now populating more of the Control_Next I can only put down to a the update. However, the automatic entries put in by Visual Studio would have been fine but I realised we had the MSI launch the exe after install using this: Visual Studio Installer > How To Launch App at End of Installer technique.
That meant I was injecting and modifying the Control_Next and thus caused the loop of Control_Next to be non circular. It is worth noting that the Control_Next is basically the tab order of the MSI screen and it must always be closed (imagine the tab without anywhere to go).. Anyway, it was ultimately caused by us modifying on the post build process the Control_Next to add in the checkbox. After working out the last entry on a build without our code running i just modified the original last entry and then slotted in out one there. Now it works fine.
Hope this helps
Upvotes: 0
Reputation: 42126
Control_Next: This is probably just the tab-order for the controls on the dialog. See the Control_Next
column of the Control Table. You need to find a way to visit each control of the dialog in sequence and sort out so there are no loops or double links.
TAB Order: In the dialog in question (launch the setup and get yourself to the FinishedForm
dialog), try hitting TAB repeatedly to see what happens. It might work, but you might see the control order being messed up so TAB unexpectedly moves around the dialog haphazardly going in "reverse" selecting a control already visited or similar.
Fix: Fixing this depends on what tool you are using. You can "test fix" directly in the final MSI using ORCA or a similar tool to edit the Control Table directly (just open the MSI and do it). The real, lasting fix will be in the sources used to compile the setup. WiX, Installshield, Advanced Installer, Visual Studio Installer, or whatever tool you are using. Exact fix depends on tool. A screen shot of the Control Table content could give us the clue we need
.
Upvotes: 2