Ik ben begonnen aan een programma in C#, waarin ik gebruik wil gaan maken van de Windows Installer functies. Denk bijvoorbeeld aan het installeren van een functie op het moment dat die voor het eerst gebruikt gaat worden, ala Microsoft Office.
Na wat zoeken vond ik op MSDN de SDK en een overzicht van alle beschikbare API calls. Volgens de SDK moet elk programma eerst MsiGetProductCode aanroepen om de ProductCode te achterhalen, dus daar ben ik maar mee begonnen
Hierbij krijg ik echter altijd als waarde van lpProductBuf een lege string
De waarde die de functie zelf teruggeeft klopt wel, want die geeft ERROR_SUCCESS terug wat dus betekent dat de call gelukt is. Ook MsiSpy geeft aan dat het component wel correct is geïnstalleerd.
De Automation Interface van uit msi.dll is trouwens geen oplossing, want die bevat in .NET alleen interfaces
Wie ziet wat ik na een dag zoeken nog niet zie?
Na wat zoeken vond ik op MSDN de SDK en een overzicht van alle beschikbare API calls. Volgens de SDK moet elk programma eerst MsiGetProductCode aanroepen om de ProductCode te achterhalen, dus daar ben ik maar mee begonnen
C#:
1
2
| [DllImport("msi")] public static extern uint MsiGetProductCode(string szComponent, string lpProductBuf); |
C#:
1
2
| string lpProductBuf = ""; MsiGetProductCode("{GUID}", lpProductBuf); |
Hierbij krijg ik echter altijd als waarde van lpProductBuf een lege string
De Automation Interface van uit msi.dll is trouwens geen oplossing, want die bevat in .NET alleen interfaces
Don't be afraid of the dark, be afraid of what it hides