I am trying to schedule a reboot if certain actions were done as part of my custom action. I have a CA1 that runs in a deferred mode. This CA1 sets a registry key to indicate whether a reboot is necessary following the installation. I need to have another CA2 run after my CA1. CA2 checks for the registry key and must call ScheduleReboot action.
I run CA2 on a deferred mode. I just call Session.DoAction("ScheduleReboot"). However my installation is giving an error whenever it hits this CA2.
MSI (s) (D8:30): Executing op: CustomActionSchedule(Action=aaa,ActionType=1062,Source=Session.DoAction "ScheduleReboot" ,,) MSI (s) (D8:30): Creating MSIHANDLE (1) of type 790536 for thread 5424 MSI (s) (D8:30): Creating MSIHANDLE (2) of type 0 for thread 5424 MSI (s) (D8:30): Entering MsiProvideComponentFromDescriptor. Descriptor: Wwfyw*qz??RPR$j{ODC-SharedComponents>M5KDYSUnf(HA*L[xeX)y, PathBuf: F3D148, pcchPathBuf: F3D358, pcchArgsOffset: F3D114 MSI (s) (D8:30): MsiProvideComponentFromDescriptor called for component {997FA962-E067-11D1-9396-00A0C90F27F9}: returning harcoded oleaut32.dll value MSI (s) (D8:30): MsiProvideComponentFromDescriptor is returning: 0 MSI (s) (D8:30): Note: 1: 1720 2: aaa 3: -2147467259 4: Msi API Error 5: DoAction,Action 6: 1 7: 1
I have CA1 scheduled to run after StartServices action. I have CA2 schduled to run after CA1.
> I am trying to schedule a reboot if certain actions were done as part of my > custom action. I have a CA1 that runs in a deferred mode. This CA1 sets a > registry key to indicate whether a reboot is necessary following the > installation. I need to have another CA2 run after my CA1. CA2 checks for > the registry key and must call ScheduleReboot action.
> I run CA2 on a deferred mode. I just call > Session.DoAction("ScheduleReboot"). However my installation is giving an > error whenever it hits this CA2.
> MSI (s) (D8:30): Executing op: > CustomActionSchedule(Action=aaa,ActionType=1062,Source=Session.DoAction > "ScheduleReboot" > ,,) > MSI (s) (D8:30): Creating MSIHANDLE (1) of type 790536 for thread 5424 > MSI (s) (D8:30): Creating MSIHANDLE (2) of type 0 for thread 5424 > MSI (s) (D8:30): Entering MsiProvideComponentFromDescriptor. Descriptor: > Wwfyw*qz??RPR$j{ODC-SharedComponents>M5KDYSUnf(HA*L[xeX)y, PathBuf: F3D148, > pcchPathBuf: F3D358, pcchArgsOffset: F3D114 > MSI (s) (D8:30): MsiProvideComponentFromDescriptor called for component > {997FA962-E067-11D1-9396-00A0C90F27F9}: returning harcoded oleaut32.dll > value > MSI (s) (D8:30): MsiProvideComponentFromDescriptor is returning: 0 > MSI (s) (D8:30): Note: 1: 1720 2: aaa 3: -2147467259 4: Msi API Error 5: > DoAction,Action 6: 1 7: 1
> I have CA1 scheduled to run after StartServices action. I have CA2 schduled > to run after CA1.
> Session.DoAction for ScheduleReboot apparently works only in an immediate > custom action. > -- > Phil Wilson [MVP Windows Installer] > ---- > "Prasanna" <csoprasanna-nos...@hotmail.com> wrote in message > news:#wZulEUiEHA.1048@tk2msftngp13.phx.gbl... > > I am trying to schedule a reboot if certain actions were done as part of > my > > custom action. I have a CA1 that runs in a deferred mode. This CA1 sets a > > registry key to indicate whether a reboot is necessary following the > > installation. I need to have another CA2 run after my CA1. CA2 checks for > > the registry key and must call ScheduleReboot action.
> > I run CA2 on a deferred mode. I just call > > Session.DoAction("ScheduleReboot"). However my installation is giving an > > error whenever it hits this CA2.
> > MSI (s) (D8:30): Executing op: > > CustomActionSchedule(Action=aaa,ActionType=1062,Source=Session.DoAction > > "ScheduleReboot" > > ,,) > > MSI (s) (D8:30): Creating MSIHANDLE (1) of type 790536 for thread 5424 > > MSI (s) (D8:30): Creating MSIHANDLE (2) of type 0 for thread 5424 > > MSI (s) (D8:30): Entering MsiProvideComponentFromDescriptor. Descriptor: > > Wwfyw*qz??RPR$j{ODC-SharedComponents>M5KDYSUnf(HA*L[xeX)y, PathBuf: > F3D148, > > pcchPathBuf: F3D358, pcchArgsOffset: F3D114 > > MSI (s) (D8:30): MsiProvideComponentFromDescriptor called for component > > {997FA962-E067-11D1-9396-00A0C90F27F9}: returning harcoded oleaut32.dll > > value > > MSI (s) (D8:30): MsiProvideComponentFromDescriptor is returning: 0 > > MSI (s) (D8:30): Note: 1: 1720 2: aaa 3: -2147467259 4: Msi API Error 5: > > DoAction,Action 6: 1 7: 1
> > I have CA1 scheduled to run after StartServices action. I have CA2 > schduled > > to run after CA1.
> Yes, You are right. It worked when I had the mode set to Immediate. However > I want this to work from a deferred mode. Is there any way I can do it?
> "Phil Wilson" <Phil.Wil...@unisys.spamcom> wrote in message > news:%23NB5MTUiEHA.3608@TK2MSFTNGP09.phx.gbl... > > Session.DoAction for ScheduleReboot apparently works only in an immediate > > custom action. > > -- > > Phil Wilson [MVP Windows Installer] > > ---- > > "Prasanna" <csoprasanna-nos...@hotmail.com> wrote in message > > news:#wZulEUiEHA.1048@tk2msftngp13.phx.gbl... > > > I am trying to schedule a reboot if certain actions were done as part of > > my > > > custom action. I have a CA1 that runs in a deferred mode. This CA1 sets > a > > > registry key to indicate whether a reboot is necessary following the > > > installation. I need to have another CA2 run after my CA1. CA2 checks > for > > > the registry key and must call ScheduleReboot action.
> > > I run CA2 on a deferred mode. I just call > > > Session.DoAction("ScheduleReboot"). However my installation is giving an > > > error whenever it hits this CA2.
> I even tried writting a C++ DLL that will call ::MsiDoAction(hInstall, > _T("ScheduleReboot")). It doesn't seem to work.
> Any ideas?
> "Prasanna" <csoprasanna-nos...@hotmail.com> wrote in message > news:e0zGMAViEHA.1776@tk2msftngp13.phx.gbl... > > Yes, You are right. It worked when I had the mode set to Immediate. > However > > I want this to work from a deferred mode. Is there any way I can do it?
> > "Phil Wilson" <Phil.Wil...@unisys.spamcom> wrote in message > > news:%23NB5MTUiEHA.3608@TK2MSFTNGP09.phx.gbl... > > > Session.DoAction for ScheduleReboot apparently works only in an > immediate > > > custom action. > > > -- > > > Phil Wilson [MVP Windows Installer] > > > ---- > > > "Prasanna" <csoprasanna-nos...@hotmail.com> wrote in message > > > news:#wZulEUiEHA.1048@tk2msftngp13.phx.gbl... > > > > I am trying to schedule a reboot if certain actions were done as part > of > > > my > > > > custom action. I have a CA1 that runs in a deferred mode. This CA1 > sets > > a > > > > registry key to indicate whether a reboot is necessary following the > > > > installation. I need to have another CA2 run after my CA1. CA2 checks > > for > > > > the registry key and must call ScheduleReboot action.
> > > > I run CA2 on a deferred mode. I just call > > > > Session.DoAction("ScheduleReboot"). However my installation is giving > an > > > > error whenever it hits this CA2.
> > > > MSI (s) (D8:30): Executing op:
> CustomActionSchedule(Action=aaa,ActionType=1062,Source=Session.DoAction > > > > "ScheduleReboot" > > > > ,,) > > > > MSI (s) (D8:30): Creating MSIHANDLE (1) of type 790536 for thread 5424 > > > > MSI (s) (D8:30): Creating MSIHANDLE (2) of type 0 for thread 5424 > > > > MSI (s) (D8:30): Entering MsiProvideComponentFromDescriptor. > Descriptor: > > > > Wwfyw*qz??RPR$j{ODC-SharedComponents>M5KDYSUnf(HA*L[xeX)y, PathBuf: > > > F3D148, > > > > pcchPathBuf: F3D358, pcchArgsOffset: F3D114 > > > > MSI (s) (D8:30): MsiProvideComponentFromDescriptor called for > component > > > > {997FA962-E067-11D1-9396-00A0C90F27F9}: returning harcoded > oleaut32.dll > > > > value > > > > MSI (s) (D8:30): MsiProvideComponentFromDescriptor is returning: 0 > > > > MSI (s) (D8:30): Note: 1: 1720 2: aaa 3: -2147467259 4: Msi API Error > 5: > > > > DoAction,Action 6: 1 7: 1
> > > > I have CA1 scheduled to run after StartServices action. I have CA2 > > > schduled > > > > to run after CA1.
I can't make it Immediate since I want to execute the CA after I start some services. Basically CA1 is supposed to run after StartServices action. CA1 figures whether it need to do a reboot or not and then it should schedule a reboot if required. The code is quite custom that needs to be done after I install my service. Hence I need to run it on a deferred mode after the services gets started.
"Phil Wilson" <pdjwil...@nospam.cox.net> wrote in message
> I wouldn't expect it work really, it's the same API underneath. What's the > problem with making the CA immediate? > -- > Phil Wilson > [MVP Windows Installer] > Definitive Guide to Windows Installer
> "Prasanna" <csoprasanna-nos...@hotmail.com> wrote in message > news:exNqDWXiEHA.3264@tk2msftngp13.phx.gbl... > > I even tried writting a C++ DLL that will call ::MsiDoAction(hInstall, > > _T("ScheduleReboot")). It doesn't seem to work.
> > Any ideas?
> > "Prasanna" <csoprasanna-nos...@hotmail.com> wrote in message > > news:e0zGMAViEHA.1776@tk2msftngp13.phx.gbl... > > > Yes, You are right. It worked when I had the mode set to Immediate. > > However > > > I want this to work from a deferred mode. Is there any way I can do it?
> > > "Phil Wilson" <Phil.Wil...@unisys.spamcom> wrote in message > > > news:%23NB5MTUiEHA.3608@TK2MSFTNGP09.phx.gbl... > > > > Session.DoAction for ScheduleReboot apparently works only in an > > immediate > > > > custom action. > > > > -- > > > > Phil Wilson [MVP Windows Installer] > > > > ---- > > > > "Prasanna" <csoprasanna-nos...@hotmail.com> wrote in message > > > > news:#wZulEUiEHA.1048@tk2msftngp13.phx.gbl... > > > > > I am trying to schedule a reboot if certain actions were done as > part > > of > > > > my > > > > > custom action. I have a CA1 that runs in a deferred mode. This CA1 > > sets > > > a > > > > > registry key to indicate whether a reboot is necessary following the > > > > > installation. I need to have another CA2 run after my CA1. CA2 > checks > > > for > > > > > the registry key and must call ScheduleReboot action.
> > > > > I run CA2 on a deferred mode. I just call > > > > > Session.DoAction("ScheduleReboot"). However my installation is > giving > > an > > > > > error whenever it hits this CA2.
> > > > > MSI (s) (D8:30): Executing op:
> > CustomActionSchedule(Action=aaa,ActionType=1062,Source=Session.DoAction > > > > > "ScheduleReboot" > > > > > ,,) > > > > > MSI (s) (D8:30): Creating MSIHANDLE (1) of type 790536 for thread > 5424 > > > > > MSI (s) (D8:30): Creating MSIHANDLE (2) of type 0 for thread 5424 > > > > > MSI (s) (D8:30): Entering MsiProvideComponentFromDescriptor. > > Descriptor: > > > > > Wwfyw*qz??RPR$j{ODC-SharedComponents>M5KDYSUnf(HA*L[xeX)y, PathBuf: > > > > F3D148, > > > > > pcchPathBuf: F3D358, pcchArgsOffset: F3D114 > > > > > MSI (s) (D8:30): MsiProvideComponentFromDescriptor called for > > component > > > > > {997FA962-E067-11D1-9396-00A0C90F27F9}: returning harcoded > > oleaut32.dll > > > > > value > > > > > MSI (s) (D8:30): MsiProvideComponentFromDescriptor is returning: 0 > > > > > MSI (s) (D8:30): Note: 1: 1720 2: aaa 3: -2147467259 4: Msi API > Error > > 5: > > > > > DoAction,Action 6: 1 7: 1
> > > > > I have CA1 scheduled to run after StartServices action. I have CA2 > > > > schduled > > > > > to run after CA1.
I had to do the exact same thing. I created a file in the system temp dir, but same concept. Run CA2 as immediate after InstallFinalize in the InstallExecute sequence as the workaround. I wonder how the MSI engine sets this in the standard actions that are likely running in that context...
Phil Wilson wrote: > Session.DoAction for ScheduleReboot apparently works only in an immediate > custom action. > -- > Phil Wilson [MVP Windows Installer] > ---- > "Prasanna" <csoprasanna-nos...@hotmail.com> wrote in message > news:#wZulEUiEHA.1048@tk2msftngp13.phx.gbl... > > I am trying to schedule a reboot if certain actions were done as part of > my > > custom action. I have a CA1 that runs in a deferred mode. This CA1 sets a > > registry key to indicate whether a reboot is necessary following the > > installation. I need to have another CA2 run after my CA1. CA2 checks for > > the registry key and must call ScheduleReboot action.
> > I run CA2 on a deferred mode. I just call > > Session.DoAction("ScheduleReboot"). However my installation is giving an > > error whenever it hits this CA2.
> I had to do the exact same thing. I created a file in the system temp > dir, but same concept. Run CA2 as immediate after InstallFinalize in > the InstallExecute sequence as the workaround. I wonder how the MSI > engine sets this in the standard actions that are likely running in > that context...
> Phil Wilson wrote: > > Session.DoAction for ScheduleReboot apparently works only in an > immediate > > custom action. > > -- > > Phil Wilson [MVP Windows Installer] > > ---- > > "Prasanna" <csoprasanna-nos...@hotmail.com> wrote in message > > news:#wZulEUiEHA.1048@tk2msftngp13.phx.gbl... > > > I am trying to schedule a reboot if certain actions were done as > part of > > my > > > custom action. I have a CA1 that runs in a deferred mode. This CA1 > sets a > > > registry key to indicate whether a reboot is necessary following > the > > > installation. I need to have another CA2 run after my CA1. CA2 > checks for > > > the registry key and must call ScheduleReboot action.
> > > I run CA2 on a deferred mode. I just call > > > Session.DoAction("ScheduleReboot"). However my installation is > giving an > > > error whenever it hits this CA2.
> > > MSI (s) (D8:30): Executing op:
> CustomActionSchedule(Action=aaa,ActionType=1062,Source=Session.DoAction > > > "ScheduleReboot" > > > ,,) > > > MSI (s) (D8:30): Creating MSIHANDLE (1) of type 790536 for thread > 5424 > > > MSI (s) (D8:30): Creating MSIHANDLE (2) of type 0 for thread 5424 > > > MSI (s) (D8:30): Entering MsiProvideComponentFromDescriptor. > Descriptor: > > > Wwfyw*qz??RPR$j{ODC-SharedComponents>M5KDYSUnf(HA*L[xeX)y, PathBuf: > > F3D148, > > > pcchPathBuf: F3D358, pcchArgsOffset: F3D114 > > > MSI (s) (D8:30): MsiProvideComponentFromDescriptor called for > component > > > {997FA962-E067-11D1-9396-00A0C90F27F9}: returning harcoded > oleaut32.dll > > > value > > > MSI (s) (D8:30): MsiProvideComponentFromDescriptor is returning: 0 > > > MSI (s) (D8:30): Note: 1: 1720 2: aaa 3: -2147467259 4: Msi API > Error 5: > > > DoAction,Action 6: 1 7: 1
> > > I have CA1 scheduled to run after StartServices action. I have CA2 > > schduled > > > to run after CA1.