I am using orca to edit a Windows Service Install msi.
The ServiceInstall table is giving me grief in that adding a row fails
repeatedly.
I think the Component_ category is the one that is the cause. The
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/servi
ceinstall_table.asp
file states that this is "External key to column one of the Component Table."
What on earth does this statement mean? Is it the value in the Component
column which is column one? and how do you identify which row should be
used? And where do you get the External key?
cheers
Peter
It means that the Component column in the ServiceInstall table is column 1
of the entry in the Component table whose KeyPath column points to the File
table with your Service executable. It might help to just look at the File
table - the entry there for your Service exe has a Component column - that's
the same one you need in the ServiceInstall table.
[[The Component table is a list of components (most often containing only
one file) and each Component table entry usually has a KeyPath entry
pointing to a File table or Registry table entry. ]]

Signature
Phil Wilson
[Microsoft MVP-Windows Installer]
Definitive Guide to Windows Installer
http://apress.com/book/bookDisplay.html?bID=280
>I am using orca to edit a Windows Service Install msi.
>
[quoted text clipped - 13 lines]
>
> Peter
PeterW - 20 Jun 2005 15:21 GMT
Thanks Phil
Now the ServiceInstall table adds the record without any trouble.
I am still stumped at the next hurdle though. I run the installer and it
returns Error 1075: The dependency service does not exist or has been marked
for deletion. This when I have cleaned up the Services by removing the
service from the Services list and uninstalling as necessary before starting.
The documentation states to enter [~] in the dependencies field for no
dependencies. This is verified by the fact that if the service were
installed using installutil it shows no dependencies and runs correctly. By
adding the value [~] to the record using orca, it seems to act as if there
were dependencies defined in the serviceInstall table. That makes me think
that maybe [~] does not mean null at all!
To recap: the values I enter into the row for serviceInstall table are as
follows
Name=svcDOILoad
DisplayName = DOILoad Service
ServiceName = svcDOILoad
ServiceType=0x00000010
StartType=0x00000002
ErrorControl=0x00000001
LoadOrderGroup=null
Dependencies=[~]
StartName=DOIServiceUser
Password=aPassword
Args=left empty
Component_ = C__74F292ECB195409A816A47141D790DF2
cheers

Signature
PeterW
> It means that the Component column in the ServiceInstall table is column 1
> of the entry in the Component table whose KeyPath column points to the File
[quoted text clipped - 23 lines]
> >
> > Peter
Phil Wilson - 20 Jun 2005 16:36 GMT
You've probably discovered this already, but just leave the Dependencies
entry empty if there are no dependencies. Null is a separator between
dependencies - that documentation says the list ends with a double null, so
maybe that would work as no dependencies.

Signature
Phil Wilson
[Microsoft MVP-Windows Installer]
> Thanks Phil
>
[quoted text clipped - 67 lines]
>> >
>> > Peter
PeterW - 20 Jun 2005 16:56 GMT
Thanks Phil
I got it all to work properly. Finally I had an entry for the service in the
service list that would not disappear even after service was uninstalled and
programs removed. It needed me to clean up registry before it would all
install properly.
Now it all installs and uninstalls as intended and can be started and all is
great!
Thanks for your help.
cheers

Signature
PeterW
> You've probably discovered this already, but just leave the Dependencies
> entry empty if there are no dependencies. Null is a separator between
[quoted text clipped - 71 lines]
> >> >
> >> > Peter
Phil Wilson - 21 Jun 2005 15:13 GMT
Just a note: It won't delete unless you set
msidbServiceControlEventUninstallDelete in the ServiceControl table.

Signature
Phil Wilson
[Microsoft MVP-Windows Installer]
> Thanks Phil
>
[quoted text clipped - 98 lines]
>> >> >
>> >> > Peter