cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
sajidr
Level 3

Windows 2000 - Basic MSI - Error 1925 during InstallFinalize

My MSI package works well when installed as an administrator under Windows 2000 and XP and as a standard user under XP. Under Windows 2000, a standard user installation fails with an error code of 1925 which is an access denied error.

I ran tried to install my package with logging enabled and noticed that ALLUSERS=1. This is despite the fact that I have deleted the ALLUSERS property from the Property table, and specified ALLLUSER="" from the msiexec command line. This one really has me scratching my head. I'd think that if I were able to do the same installation in XP as std user, I'd be able to pull it off in Win2k.

I'm using IS2008 with a basic MSI package. Pertinent log file attached. Command line below. Any help appreciated.

C:\>msiexec /l"*" setup-log.txt /i "Imagine Utilities for Windows.msi" ALLUSERS
=""
Labels (1)
0 Kudos
(2) Replies
sajidr
Level 3

On further investigation I've isolated when the problem occurs: During InstallValidate (during an uninstallation attempt) the Windows Installer Service sets ALLUSERS=1. The funny thing is that, this doesn't happen on Windows XP. I've further isolated the issue; the problem occurs only when I schedule a particular custom action to occur as the first custom action that immediately follows ISSetAllUsers. My custom action, called DetectExcel, does, literally, nothing more than create an instance of Excel.Application and return ERROR_SUCCESS if the call to CreateObject succeeded.

I am really puzzled why this particular custom action would trigger setting ALLUSERS to 1. Setting the custom action condition VersionNT >= 501 solves my problems. The CA is scheduled to run during both the UI and Exec sequences, with In-Script Execution setting Immediate Execution, and Execution Scheduling set to Execute only once.

The CA runs on Windows XP as expected, and it does not trigger ALLUSERS=1. Anybody with similar experiences or suggestions?

[CODE]
Action start 17:57:59: InstallValidate.
MSI (s) (A8:48) [17:57:59:453]: Feature: Communications_Libraries; Installed: Local; Request: Absent; Action: Absent
...
MSI (s) (A8!1C) [17:57:59:859]: PROPERTY CHANGE: Adding ALLUSERS property. Its value is '1'.
...
Action ended 17:58:00: InstallValidate. Return value 1.
[/CODE]

Code for my DetectExcel custom action:


function CustomAction_SetExcelVersionCompat(hMSI)
OBJECT oXlApp;
STRING sXlVersion;
STRING tmp;
NUMBER nVersion;
begin
set oXlApp = GetExcel();

if( IsObject(oXlApp) ) then
try
sXlVersion = oXlApp.Version();
SprintfMsiLog("Error getting Excel Version %s, %i.", Err.Description(), Err.Number());
catch

endcatch;
oXlApp.Quit();

SprintfMsiLog("Excel Version: %s", sXlVersion);
StrToNum(nVersion, sXlVersion);
if( nVersion >= 9 ) then
MsiSetProperty(hMSI, "COMPATIBLE_EXCEL_FOUND", "Hell Yeah");
endif;
endif;

return ERROR_SUCCESS;
end;

function OBJECT GetExcel()
OBJECT xlApp;
begin
try
set xlApp = CreateObject("Excel.Application");
// In order to work with addins object we
// need at least 1 workbook.
xlApp.Workbooks.Add();
return xlApp;
catch
SprintfMsiLog( "Excel not found" );
SprintfMsiLog( "Error in GetExcel ( %s ) ", Err.Description() );
endcatch;
end;
0 Kudos
sajidr
Level 3

Could this be related?
0 Kudos