I got it working. It seems that msiexec REQUIRES that the function being called return an int. By changing my KioskKillerMain from returning void to returning an int, and returning a 0, the problem vanishes.
This is something that should be documented in the WiX documentation, and mentioned in the tutorial. My code wasn't failing, but it wasn't returning ANYTHING to msiexec, which tells me that something in msiexec doesn't get initialized (since it is using garbage) until the call to the entry point of the dll is called in the custom action. Since it didn't get initialized prior to that point, and the function wasn't returning anything, it just kept (and subsequently used) the garbage it had before the call. Thank you. -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Wilson, Phil Sent: Thursday, November 16, 2006 5:10 PM To: wix-users@lists.sourceforge.net Subject: Re: [WiX-users] File in use >>>The file [2][3] is being held in use by the following process: Name: [4], Id: [5], Window Title: '[6]'. >>>>The first problem: what the HECK are 2, 3, 4, 5, and 6? It's a template, actual values supplied at run time. That log seems to show that your KioskKillerMain call failed, an error was returned (the 3) and that becomes ERROR_INSTALL_FAILURE. It's not a coincidence that it calls your code and then immediately gets an error, dumps the property values and stops. Do you actually return that 3? If not, MSI is seeing your code fail and returning it for you. Phil Wilson -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Dane Anderson Sent: Thursday, November 16, 2006 4:40 PM To: wix-users@lists.sourceforge.net Subject: [WiX-users] File in use I have an install package that I am working on. I created an application to seek out and kill any currently running instances of the application (or anything that might be using it). That application works perfectly. Unfortunately the install has to run silently (no interface what so ever beyond the default progress bar) because the customer is using SMS to install and popups and reboots cause SMS to think the install failed. Because it has to run silently, and MUST run before any files are copied to the target machine, I have converted my little killer app to a dll (to avoid having the cmd window popup). No problem there. It properly executes the dll at the proper time. Then I run into trouble. I seem to be getting error code 1603 back (in the /l*v log file). The description of that error at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/set up/windows_installer_error_messages.asp <http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/se tup/windows_installer_error_messages.asp> is: The file [2][3] is being held in use by the following process: Name: [4], Id: [5], Window Title: '[6]'. The first problem: what the HECK are 2, 3, 4, 5, and 6? The Second problem: Why the heck is it talking about something being in use? The dll is being included via a binary element: <Binary Id="KioskKiller.dll" SourceFile="C:\trials\KioskKiller\KioskKillerDll\Debug\KioskKillerDll.dl l" /> The CustomAction element is: <CustomAction Id="InstKillKioskCmdLine" DllEntry="KioskKillerMain" BinaryKey="KioskKiller.dll" Execute="immediate" Return="check" /> The Custom element (in the InstallExecuteSequence) is: <Custom Action="InstKillKioskCmdLine" Before="LaunchConditions">NOT Installed</Custom> So, I'm missing something. I'm not trying to execute anything, that I am aware of, that is already on the machine (other than something INSIDE the msi file). The log file at that point contains: Action start 15:56:56: InstKillKioskCmdLine. MSI (s) (44:9C) [15:56:56:843]: Invoking remote custom action. DLL: C:\WINDOWS\Installer\MSI24.tmp, Entrypoint: KioskKillerMain MSI (s) (44:20) [15:56:56:843]: Generating random cookie. MSI (s) (44:20) [15:56:56:858]: Created Custom Action Server with PID 1576 (0x628). MSI (s) (44:18) [15:56:56:937]: Running as a service. MSI (s) (44:18) [15:56:56:937]: Hello, I'm your 32bit Impersonated custom action server. Action ended 15:56:57: InstKillKioskCmdLine. Return value 3. Action ended 15:56:57: INSTALL. Return value 3. Property(S): REGEDIT = Regedit.exe Property(S): INTAVA = C:\Program Files\Intava\ Property(S): INSTALDIR = C:\Program Files\Intava\Kiosk\ Property(S): MAPS = C:\Program Files\Intava\Kiosk\Maps\ Property(S): SPRINT = C:\Program Files\Intava\Sprint\ Property(S): CONTENT = C:\Program Files\Intava\Sprint\Content\ Property(S): TempFolder = C:\DOCUME~1\danea\LOCALS~1\Temp\ Property(S): TARGETDIR = C:\ Property(S): ProgramFilesFolder = C:\Program Files\ Property(S): Manufacturer = Intava Property(S): ProductCode = {85E95DC3-B2E9-4FB5-B634-DE0DDE236339} Property(S): ProductLanguage = 1033 Property(S): ProductName = Intava Kiosk Setup for Sprint 2.0.0.2168 Property(S): ProductVersion = 2.0.0.2168 Property(S): UpgradeCode = {3164AE7B-15FE-474D-B0CB-7C599802CD52} Property(S): ALLUSERS = 1 Property(S): REBOOT = ReallySuppress Property(S): CMD = cmd.exe Property(S): WINDOWSFOLDER = [WindowsFolder] Property(S): AdminProperties = ALLUSERS;REBOOT Property(S): SecureCustomProperties = ALLUSERS;REBOOT Property(S): PackageCode = {1EC61969-2ABA-4444-B7AA-15DC249D824E} Property(S): ProductState = -1 Property(S): PackagecodeChanging = 1 Property(S): CURRENTDIRECTORY = C:\Sharing Property(S): CLIENTUILEVEL = 0 Property(S): CLIENTPROCESSID = 1688 Property(S): USERNAME = Dane Anderson Property(S): COMPANYNAME = Intava Corporation Property(S): VersionDatabase = 100 Property(S): ROOTDRIVE = C:\ Property(S): EXECUTEACTION = INSTALL Property(S): ACTION = INSTALL Property(S): INSTALLLEVEL = 1 Property(S): SECONDSEQUENCE = 1 Property(S): ADDLOCAL = Complete Property(S): VersionMsi = 3.01 Property(S): VersionNT = 501 Property(S): WindowsBuild = 2600 Property(S): ServicePackLevel = 2 Property(S): ServicePackLevelMinor = 0 Property(S): MsiNTProductType = 1 Property(S): WindowsFolder = C:\WINDOWS\ Property(S): WindowsVolume = C:\ Property(S): SystemFolder = C:\WINDOWS\system32\ Property(S): System16Folder = C:\WINDOWS\system\ Property(S): RemoteAdminTS = 1 Property(S): CommonFilesFolder = C:\Program Files\Common Files\ Property(S): AppDataFolder = C:\Documents and Settings\danea\Application Data\ Property(S): FavoritesFolder = C:\Documents and Settings\danea\Favorites\ Property(S): NetHoodFolder = C:\Documents and Settings\danea\NetHood\ Property(S): PersonalFolder = C:\Documents and Settings\danea\My Documents\ Property(S): PrintHoodFolder = C:\Documents and Settings\danea\PrintHood\ Property(S): RecentFolder = C:\Documents and Settings\danea\Recent\ Property(S): SendToFolder = C:\Documents and Settings\danea\SendTo\ Property(S): TemplateFolder = C:\Documents and Settings\All Users\Templates\ Property(S): CommonAppDataFolder = C:\Documents and Settings\All Users\Application Data\ Property(S): LocalAppDataFolder = C:\Documents and Settings\danea\Local Settings\Application Data\ Property(S): MyPicturesFolder = C:\Documents and Settings\danea\My Documents\My Pictures\ Property(S): AdminToolsFolder = C:\Documents and Settings\All Users\Start Menu\Programs\Administrative Tools\ Property(S): StartupFolder = C:\Documents and Settings\All Users\Start Menu\Programs\Startup\ Property(S): ProgramMenuFolder = C:\Documents and Settings\All Users\Start Menu\Programs\ Property(S): StartMenuFolder = C:\Documents and Settings\All Users\Start Menu\ Property(S): DesktopFolder = C:\Documents and Settings\All Users\Desktop\ Property(S): FontsFolder = C:\WINDOWS\Fonts\ Property(S): GPTSupport = 1 Property(S): OLEAdvtSupport = 1 Property(S): ShellAdvtSupport = 1 Property(S): Intel = 15 Property(S): PhysicalMemory = 256 Property(S): VirtualMemory = 521 Property(S): AdminUser = 1 Property(S): LogonUser = DaneA Property(S): UserSID = S-1-5-21-682003330-1563985344-1060284298-3279 Property(S): UserLanguageID = 1033 Property(S): ComputerName = DANE-VIRTUAL Property(S): SystemLanguageID = 1033 Property(S): ScreenX = 1024 Property(S): ScreenY = 768 Property(S): CaptionHeight = 26 Property(S): BorderTop = 1 Property(S): BorderSide = 1 Property(S): TextHeight = 16 Property(S): ColorBits = 32 Property(S): TTCSupport = 1 Property(S): Time = 15:56:57 Property(S): Date = 11/16/2006 Property(S): MsiWin32AssemblySupport = 5.1.2600.2180 Property(S): RedirectedDllSupport = 2 Property(S): Privileged = 1 Property(S): DATABASE = C:\WINDOWS\Installer\d06df3.msi Property(S): OriginalDatabase = C:\Sharing\SprintKioskSetup.msi Property(S): UILevel = 5 Property(S): Preselected = 1 MSI (s) (44:F8) [15:56:57:796]: MainEngineThread is returning 1603 MSI (s) (44:08) [15:56:57:796]: Destroying RemoteAPI object. MSI (s) (44:20) [15:56:57:811]: Custom Action Manager thread ending. MSI (c) (98:B4) [15:56:57:811]: Back from server. Return value: 1603 MSI (c) (98:B4) [15:56:57:811]: Decrementing counter to disable shutdown. If counter >= 0, shutdown will be denied. Counter after decrement: -1 MSI (c) (98:B4) [15:56:57:811]: PROPERTY CHANGE: Deleting SECONDSEQUENCE property. Its current value is '1'. Action ended 15:56:57: ExecuteAction. Return value 3. ------------------------------------------------------------------------ - Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDE V _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users