Start with the Windows Installer SDK.
First, search for “windows installer” 1618 which turns up Initialization Errors [Windows Installer] as the sixth hit.
When you look at this page you’ll see
Second, have a look at your event log and look for the messages per the MSDN Topic Event Logging.
When one puts this information together, the chances are high something else is triggering a silent install of a MSI based product thus the mutex is preventing the simultaneous install of the second product.
Can you help me troubleshoot my component states?
I have a shared component Component_Perf. It is shared between A.msi and B.msi.
Install A.msi MSI (s) (68:30) [11:46:28:449]: Component: Component_Perf; Installed: Absent; Request: Local; Action: Local Install B.msi MSI (s) (68:50) [11:50:03:096]: Component: Component_Perf; Installed: Absent; Request: Local; Action: Local
Install A.msi
MSI (s) (68:30) [11:46:28:449]: Component: Component_Perf; Installed: Absent; Request: Local; Action: Local
Install B.msi
MSI (s) (68:50) [11:50:03:096]: Component: Component_Perf; Installed: Absent; Request: Local; Action: Local
Since the component is already installed with A.msi, I was expecting this be Action: Null? Specifically
Install B.msi Installed: Local; Request: Local; Action: Null
Installed: Local; Request: Local; Action: Null
The behavior seems as expected during uninstallation.
Uninstall B.msi MSI (s) (68:A8) [12:02:01:415]: Component: Component_Perf; Installed: Local; Request: Absent; Action: Null Uninstall A.msi MSI (s) (68:74) [12:06:18:157]: Component: Component_Perf; Installed: Local; Request: Absent; Action: Absent
MSI (s) (68:A8) [12:02:01:415]: Component: Component_Perf; Installed: Local; Request: Absent; Action: Null
MSI (s) (68:74) [12:06:18:157]: Component: Component_Perf; Installed: Local; Request: Absent; Action: Absent
What am I missing?
You still have to install the component for Product B. Note that it shows up as "Installed: Absent" because it's not currently installed. The real question is why do you expect the Action state to be Null? Unless there's a higher version of the component on the machine, it's already installed for Product B, or it's condition evaluates to false, the Action state of Local makes sense.
So essentially Installed = Installed for Product and not Installed on Computer.
There is an API called MsiEnumClients that gives you client lists of a component. If you're only dealing with per-machine installs, it's an easy API that'll work for you.
I want to make a script that adds to the order a constant, to every line in the controlEvent table which has a “Spawndialog” value. There may be more than one such line in every dialog. How can I write a SQL query that updates these lines?
SQL Syntax [Windows Installer] says
Modify existing records in a table UPDATE {table-list} SET {column}= {constant} [, {column}= {constant}][, ...] [WHERE {operation-list}] UPDATE queries only work on nonprimary key columns.
Examples of Database Queries Using SQL and Script says
Modify an existing record in a table The following command line changes the existing value in the Title field to "Performances." The updated record has "Arts" as its primary key and is in the Feature table of the Test.msi database. Cscript WiRunSQL.vbs Test.msi "UPDATE `Feature` SET `Feature`.`Title`='Performances' WHERE `Feature`.`Feature`='Arts'"
Modify an existing record in a table
The following command line changes the existing value in the Title field to "Performances." The updated record has "Arts" as its primary key and is in the Feature table of the Test.msi database.
Cscript WiRunSQL.vbs Test.msi "UPDATE `Feature` SET `Feature`.`Title`='Performances' WHERE `Feature`.`Feature`='Arts'"
Addition however is not part of the subset of SQL Syntax that Windows Installer supports. The way I’ve solved this in the past is to start with the Working with Queries MSDN Topic and between steps 3 and 4, I run MsiRecordGetInteger, do the math, and run MsiRecoredSetInteger.
I generated a patch and upon applying that patch received this error:
Error 1334. The file 'Indexes.cmp.751F2241_A570_4290_8C69_419C00462AA5' cannot be installed because the file cannot be found in cabinet file 'Product.cab'. This could indicate a network error, an error reading from the CD-ROM, or a problem with this package. MSI (s) (9C:C4) [13:26:07:755]: Product: Division-Product 9.0 -- Error 1334. The file 'Indexes.cmp.751F2241_A570_4290_8C69_419C00462AA5' cannot be installed because the file cannot be found in cabinet file 'Product.cab'. This could indicate a network error, an error reading from the CD-ROM, or a problem with this package.
…and here’s the relevant section of my new MSI:
OK, so the error is on the italic line above, and well, it’s the first file that doesn’t match its old ID. The bold files above were added, which appeared to cause this whole section to get spanked around.
Are there ways that I can get around this issue?
Info 1721.There is a problem with this Windows Installer package. A program required for this install to complete could not be run. Contact your support personnel or package vendor. Action: WiaRegSvr32.cmd, location: C:\Winparty2005\WiaRegSvr32.cmd, command: WiaRegSrv32.cmd
My Source MSI has 2 files both having File Version : 10And My Target MSI has 2 files both having File Version : 11
I want to create an .msp for only for one file, not both the files. But when I create a .pcp file it is picking up both the files as the FileVerison has been changed. How can I do that?
Content credit also belongs to