Hi Friends,

I am currently working on an application IBM Analyst Workstation Admin v8.0. This application is a series of Vendor MSIs (4 of them) and uses SQL Server 2008 and reporter Viewer as dependencies.As part of the packaging process, I created transforms (.mst) for each of the 4 vendor MSIs and encountered an issue while deploying one of the MSIs under system account on Windows 7 OS.The same package when deployed on Windows Vista OS under system account installs and uninstalls fine without any issues. The issue is that when deploying one of the msi's on Windows 7, there is a custom action which seems to be modifying or changing the time stamp of a file..??This particular custom action is trying to do that same under system account and it is unable to update the file. I have attached the logs which shows successfull installation by running the .msi manually and the custom action which keeps trying to update the file and cannot do so under system account. Please note that this behaviour is noticed only under system account on Windows 7 OS. Any suggestions to resolve this will be very much appreciated.....

The BELOW log file where the Custom action is causing the issue:

--------------------------------------------------------------------------------------------------------

MSI (s) (98:CC) [18:15:39:838]: Executing op: ActionStart(Name=i2SaveProperties.662E2478_828F_4D9C_9057_5F971A1690A8,,)
MSI (s) (98:CC) [18:15:39:838]: Executing op: CustomActionSchedule(Action=i2SaveProperties.662E2478_828F_4D9C_9057_5F971A1690A8,ActionType=3638,Source=' i2SaveProperties saves the command line properties on first install
' so that they can be used for maintenance operations.
Set sh = CreateObject("WScript.Shell")
Dim PropArray
PropArray = Split(Session.Property("CustomActionData"), ";")
ProductName = PropArray(0)
'i2ProgramGroup = PropArray(1)
i2Shared = PropArray(1)
i2Hasp7_5 = PropArray(2)
i2Language = PropArray(3)
'i2OverrideChecks = PropArray(5)
'ProductName = session.Property("ProductName")
' Data = sh.RegRead ("HKLM\SOFTWARE\i2\Installer\CommandLine\[ProductName]\Key")
'sh.RegWrite "HKLM\SOFTWARE\i2\Installer\CommandLine\" & ProductName &"\i2ProgramGroup", i2ProgramGroup
sh.RegWrite "HKLM\SOFTWARE\i2\Installer\CommandLine\" & ProductName &"\i2Shared", i2Shared
sh.RegWrite "HKLM\SOFTWARE\i2\Installer\CommandLine\" & ProductName &"\i2Hasp7.5", i2Hasp7_5
sh.RegWrite "HKLM\SOFTWARE\i2\Installer\CommandLine\" & ProductName &"\i2Language", i2Language
'sh.RegWrite "HKLM\SOFTWARE\i
MSI (s) (98:CC) [18:15:39:838]: Executing op: ActionStart(Name=i2SetModifiedDate.476AC938_2358_49F0_ABD9_D6F54D160E60,,)
MSI (s) (98:CC) [18:15:39:838]: Executing op: CustomActionSchedule(Action=i2SetModifiedDate.476AC938_2358_49F0_ABD9_D6F54D160E60,ActionType=3702,Source=' i2SetModifyDate changes the Modify date of the files passed
' in the CustomActionData property
Option Explicit

Const ModuleGUID = "476AC938_2358_49F0_ABD9_D6F54D160E60"

Sub i2SetModifiedDate
    on error resume next 
 Dim PropArray
 PropArray = Split(Session.Property("CustomActionData"), ";")
 i2SetModifiedDateOnFile( PropArray(0))
 i2SetModifiedDateOnFile( PropArray(1))
 i2SetModifiedDateOnFile( PropArray(2))
 i2SetModifiedDateOnFile( PropArray(3))
 
end sub
   
Private Sub i2SetModifiedDateOnFile(strFilePath)
    'MsgBox("Change Date on: " & strFilePath)

    If Len(strFilePath) > 0 Then
  Dim fs, LastModifiedDate
  Set fs = CreateObject("Scripting.FileSystemObject")
  LastModifiedDate = fs.GetFile(strFilePath).DateCreated
  
  'MsgBox("Created date:" & LastModifiedDate)
  
  LastModifiedDate = dateAdd ("n", +1, LastModifiedDate ) ' add 1 minute to created date
  
  'Now call Change date-modified-
MSI (s) (98:CC) [18:15:39:838]: Executing op: ActionStart(Name=i2SetModifiedDate.23D0DE96_30C6_45A9_A2A5_2EC211E88E88,,)
MSI (s) (98:CC) [18:15:39:838]: Executing op: CustomActionSchedule(Action=i2SetModifiedDate.23D0DE96_30C6_45A9_A2A5_2EC211E88E88,ActionType=3702,Source=' i2SetModifyDate changes the Modify date of the file passed
' in the CustomActionData property
Option Explicit

Const ModuleGUID = "23D0DE96_30C6_45A9_A2A5_2EC211E88E88"
Const FileName = "i2 Semantic Type Library 0809.xml"
Sub i2SetModifiedDate
 Dim strFilePath
    on error resume next 
    strFilePath = Session.Property("CustomActionData")
   
    'MsgBox("Change Date on: " & strFilePath)

    If Len(strFilePath) > 0 Then
  Dim fs, LastModifiedDate
  Set fs = CreateObject("Scripting.FileSystemObject")
  LastModifiedDate = fs.GetFile(strFilePath).DateCreated
  
  'Msgbox("Created date:" & LastModifiedDate)
  
  LastModifiedDate = dateAdd ("n", +1, LastModifiedDate ) ' add 1 minute to created date
  
  'Now call Change date-modified-Routine:
  Call SetDateModified(strFilePath, LastModifiedDate)
  
  'Check and display result:
  LastModifiedDate = fs.GetFile(strFilePath).DateLastModified
  'Msgbox("Modified date:" & LastModifiedDate)
MSI (s) (98:CC) [18:15:39:838]: Executing op: ActionStart(Name=i2SetModifiedDate.2F73F8A8_0EA0_41AB_866D_8A45678301DF,,)
MSI (s) (98:CC) [18:15:39:838]: Executing op: CustomActionSchedule(Action=i2SetModifiedDate.2F73F8A8_0EA0_41AB_866D_8A45678301DF,ActionType=3702,Source=' i2SetModifyDate changes the Modify date of the file passed
' in the CustomActionData property
Option Explicit

Const ModuleGUID = "2F73F8A8_0EA0_41AB_866D_8A45678301DF"
Const FileName = "i2 Semantic Type Library.xml"

Sub i2SetModifiedDate
 Dim strFilePath
    on error resume next 
    strFilePath = Session.Property("CustomActionData")
   
    'MsgBox("Change Date on: " & strFilePath)

    If Len(strFilePath) > 0 Then
  Dim fs, LastModifiedDate
  Set fs = CreateObject("Scripting.FileSystemObject")
  LastModifiedDate = fs.GetFile(strFilePath).DateCreated
  
  'MsgBox("Created date:" & LastModifiedDate)
  
  LastModifiedDate = dateAdd ("n", +1, LastModifiedDate ) ' add 1 minute to created date
  
  'Now call Change date-modified-Routine:
  Call SetDateModified(strFilePath, LastModifiedDate)
  
  'Check and display result:
  LastModifiedDate = fs.GetFile(strFilePath).DateLastModified
  'MsgBox("Modified date:" & LastModifiedDate)
  

MSI (s) (98:CC) [18:15:39:838]: Executing op: ActionStart(Name=InstallFinalize,,)
MSI (s) (98:CC) [18:15:39:838]: Executing op: CleanupTempFiles(TempFiles=C:\Windows\Installer\8c0f6.mst)
MSI (s) (98:CC) [18:15:39:838]: Scheduling file 'C:\Windows\Installer\8c0f6.mst' for deletion during post-install cleanup (not post-reboot).
MSI (s) (98:CC) [18:15:39:853]: Executing op: End(Checksum=0,ProgressTotalHDWord=0,ProgressTotalLDWord=0)
MSI (s) (98:CC) [18:15:39:853]: User policy value 'DisableRollback' is 0
MSI (s) (98:CC) [18:15:39:853]: Machine policy value 'DisableRollback' is 0

THE BELOW LOG FILE IS OF A SUCCESSFULL INSTALLATION :

-----------------------------------------------------------------------------------------------------------------

MSI (s) (FC:20) [18:45:27:809]: Executing op: ActionStart(Name=i2SaveProperties.662E2478_828F_4D9C_9057_5F971A1690A8,,)
MSI (s) (FC:20) [18:45:27:809]: Executing op: CustomActionSchedule(Action=i2SaveProperties.662E2478_828F_4D9C_9057_5F971A1690A8,ActionType=3638,Source=' i2SaveProperties saves the command line properties on first install
' so that they can be used for maintenance operations.
Set sh = CreateObject("WScript.Shell")
Dim PropArray
PropArray = Split(Session.Property("CustomActionData"), ";")
ProductName = PropArray(0)
'i2ProgramGroup = PropArray(1)
i2Shared = PropArray(1)
i2Hasp7_5 = PropArray(2)
i2Language = PropArray(3)
'i2OverrideChecks = PropArray(5)
'ProductName = session.Property("ProductName")
' Data = sh.RegRead ("HKLM\SOFTWARE\i2\Installer\CommandLine\[ProductName]\Key")
'sh.RegWrite "HKLM\SOFTWARE\i2\Installer\CommandLine\" & ProductName &"\i2ProgramGroup", i2ProgramGroup
sh.RegWrite "HKLM\SOFTWARE\i2\Installer\CommandLine\" & ProductName &"\i2Shared", i2Shared
sh.RegWrite "HKLM\SOFTWARE\i2\Installer\CommandLine\" & ProductName &"\i2Hasp7.5", i2Hasp7_5
sh.RegWrite "HKLM\SOFTWARE\i2\Installer\CommandLine\" & ProductName &"\i2Language", i2Language
'sh.RegWrite "HKLM\SOFTWARE\i
MSI (s) (FC:20) [18:45:27:809]: Executing op: ActionStart(Name=i2SetModifiedDate.476AC938_2358_49F0_ABD9_D6F54D160E60,,)
MSI (s) (FC:20) [18:45:27:809]: Executing op: CustomActionSchedule(Action=i2SetModifiedDate.476AC938_2358_49F0_ABD9_D6F54D160E60,ActionType=3702,Source=' i2SetModifyDate changes the Modify date of the files passed
' in the CustomActionData property
Option Explicit

Const ModuleGUID = "476AC938_2358_49F0_ABD9_D6F54D160E60"

Sub i2SetModifiedDate
    on error resume next 
 Dim PropArray
 PropArray = Split(Session.Property("CustomActionData"), ";")
 i2SetModifiedDateOnFile( PropArray(0))
 i2SetModifiedDateOnFile( PropArray(1))
 i2SetModifiedDateOnFile( PropArray(2))
 i2SetModifiedDateOnFile( PropArray(3))
 
end sub
   
Private Sub i2SetModifiedDateOnFile(strFilePath)
    'MsgBox("Change Date on: " & strFilePath)

    If Len(strFilePath) > 0 Then
  Dim fs, LastModifiedDate
  Set fs = CreateObject("Scripting.FileSystemObject")
  LastModifiedDate = fs.GetFile(strFilePath).DateCreated
  
  'MsgBox("Created date:" & LastModifiedDate)
  
  LastModifiedDate = dateAdd ("n", +1, LastModifiedDate ) ' add 1 minute to created date
  
  'Now call Change date-modified-
MSI (s) (FC:20) [18:45:27:809]: Executing op: ActionStart(Name=i2SetModifiedDate.23D0DE96_30C6_45A9_A2A5_2EC211E88E88,,)
MSI (s) (FC:20) [18:45:27:809]: Executing op: CustomActionSchedule(Action=i2SetModifiedDate.23D0DE96_30C6_45A9_A2A5_2EC211E88E88,ActionType=3702,Source=' i2SetModifyDate changes the Modify date of the file passed
' in the CustomActionData property
Option Explicit

Const ModuleGUID = "23D0DE96_30C6_45A9_A2A5_2EC211E88E88"
Const FileName = "i2 Semantic Type Library 0809.xml"
Sub i2SetModifiedDate
 Dim strFilePath
    on error resume next 
    strFilePath = Session.Property("CustomActionData")
   
    'MsgBox("Change Date on: " & strFilePath)

    If Len(strFilePath) > 0 Then
  Dim fs, LastModifiedDate
  Set fs = CreateObject("Scripting.FileSystemObject")
  LastModifiedDate = fs.GetFile(strFilePath).DateCreated
  
  'Msgbox("Created date:" & LastModifiedDate)
  
  LastModifiedDate = dateAdd ("n", +1, LastModifiedDate ) ' add 1 minute to created date
  
  'Now call Change date-modified-Routine:
  Call SetDateModified(strFilePath, LastModifiedDate)
  
  'Check and display result:
  LastModifiedDate = fs.GetFile(strFilePath).DateLastModified
  'Msgbox("Modified date:" & LastModifiedDate)
MSI (s) (FC:20) [18:45:27:809]: Executing op: ActionStart(Name=i2SetModifiedDate.2F73F8A8_0EA0_41AB_866D_8A45678301DF,,)
MSI (s) (FC:20) [18:45:27:809]: Executing op: CustomActionSchedule(Action=i2SetModifiedDate.2F73F8A8_0EA0_41AB_866D_8A45678301DF,ActionType=3702,Source=' i2SetModifyDate changes the Modify date of the file passed
' in the CustomActionData property
Option Explicit

Const ModuleGUID = "2F73F8A8_0EA0_41AB_866D_8A45678301DF"
Const FileName = "i2 Semantic Type Library.xml"

Sub i2SetModifiedDate
 Dim strFilePath
    on error resume next 
    strFilePath = Session.Property("CustomActionData")
   
    'MsgBox("Change Date on: " & strFilePath)

    If Len(strFilePath) > 0 Then
  Dim fs, LastModifiedDate
  Set fs = CreateObject("Scripting.FileSystemObject")
  LastModifiedDate = fs.GetFile(strFilePath).DateCreated
  
  'MsgBox("Created date:" & LastModifiedDate)
  
  LastModifiedDate = dateAdd ("n", +1, LastModifiedDate ) ' add 1 minute to created date
  
  'Now call Change date-modified-Routine:
  Call SetDateModified(strFilePath, LastModifiedDate)
  
  'Check and display result:
  LastModifiedDate = fs.GetFile(strFilePath).DateLastModified
  'MsgBox("Modified date:" & LastModifiedDate)
  

MSI (s) (FC:20) [18:45:27:809]: Executing op: ActionStart(Name=InstallFinalize,,)
MSI (s) (FC:20) [18:45:27:809]: Executing op: CleanupTempFiles(TempFiles=C:\Windows\Installer\bcce1.mst)
MSI (s) (FC:20) [18:45:27:809]: Scheduling file 'C:\Windows\Installer\bcce1.mst' for deletion during post-install cleanup (not post-reboot).
MSI (s) (FC:20) [18:45:27:809]: Executing op: End(Checksum=0,ProgressTotalHDWord=0,ProgressTotalLDWord=0)
MSI (s) (FC:20) [18:45:27:825]: User policy value 'DisableRollback' is 0
MSI (s) (FC:20) [18:45:27:825]: Machine policy value 'DisableRollback' is 0
MSI (s) (FC:4C) [18:45:28:419]: Invoking remote custom action. DLL: C:\Windows\Installer\MSIF35F.tmp, Entrypoint: HaspMsiInst
MSI (s) (FC:20) [18:47:00:107]: Note: 1: 2318 2: 
MSI (s) (FC:20) [18:47:00:107]: Note: 1: 2318 2: 
MSI (s) (FC:20) [18:47:00:107]: No System Restore sequence number for this installation.
MSI (s) (FC:20) [18:47:00:122]: Unlocking Server
MSI (s) (FC:20) [18:47:00:138]: PROPERTY CHANGE: Deleting UpdateStarted property. Its current value is '1'.
MSI (s) (FC:20) [18:47:00:185]: Skipping action: i2NETHaspCompatible.68423B2A_875E_425C_BD4F_56C759A1BEAF (condition is false)
MSI (s) (FC:20) [18:47:00:185]: Doing action: RefreshShellExtensions
Action ended 18:47:00: InstallFinalize. Return value 1.
MSI (s) (FC:20) [18:47:00:185]: Transforming table CustomAction.

MSI (s) (FC:E0) [18:47:00:263]: Invoking remote custom action. DLL: C:\Windows\Installer\MSI5A25.tmp, Entrypoint: DLL1
Action start 18:47:00: RefreshShellExtensions.
MSI (s) (FC:20) [18:47:00:326]: Doing action: DLLWrapCleanup
Action ended 18:47:00: RefreshShellExtensions. Return value 1.
MSI (s) (FC:20) [18:47:00:326]: Transforming table CustomAction.

MSI (s) (FC:A0) [18:47:00:388]: Invoking remote custom action. DLL: C:\Windows\Installer\MSI5AA3.tmp, Entrypoint: DLLWrapCleanup
Action start 18:47:00: DLLWrapCleanup.
MSI (s) (FC:20) [18:47:00:388]: Transforming table InstallExecuteSequence.

Action ended 18:47:00: DLLWrapCleanup. Return value 1.
Action ended 18:47:00: INSTALL. Return value 1.

0 Comments   [ + ] Show Comments

Comments

Please log in to comment

Community Chosen Answer

2

Btwn...You have mentioned that, your application has 4 msi and you have created mst for each msi..

Are you installing them as per installation order?

Answered 07/27/2012 by: jagadeish
Red Belt

  • Yes.I am installing them as per the instalaltion order.The same order works well in Windows Vista OS. Only Windows 7 faces the issue.
  • I didn't see any difference between the success and failed logs till the following line

    Machine policy value 'DisableRollback' is 0
Please log in to comment

Answers

1

A longshot but the file may be owned by trusted installer and you do not have rights to do that modification to it.  If you know what file it is, go into the files security properties and see who has rights to modify that file.

Answered 07/27/2012 by: SMal.tmcc
Red Belt

Please log in to comment
1

Have you tried disabling this Custom Action and see what happens. If the application works fine, just disable it.

Answered 07/31/2012 by: piyushnasa
Red Belt

Please log in to comment
0

Does it behave the same way in GUI & silent mode on both Win7 & Vista

Answered 08/03/2012 by: hrs2cool
Black Belt

Please log in to comment
Answer this question or Comment on this question for clarity