I've built my msi installer now, and tried to launch the CE App Manager: Here's how I got my properties. <Property Id="CEAPPMGR"> <RegistrySearch Id="CEAPPMGRCMD" Root="HKLM" Type="raw" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\CEAPPMGR.EXE" ></RegistrySearch> </Property> <Property Id="CEAPPMGRDIR"> <RegistrySearch Id="CEAPPMGRD" Root="HKLM" Type="file" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\CEAPPMGR.EXE" ></RegistrySearch> </Property>
Then I install my files to the folder (I'm not sure why this used to be the preferred place--in a subfolder of ceappmgr, but there you go). <Condition Message="Microsoft ActiveSync or Windows Mobile Device Center software is required to install this software."> CEAPPMGR </Condition> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="CEAPPMGRDIR" > <Directory Id="MFR" Name="Wieser Software Ltd"> <Directory Id="INSTALLLOCATION" Name="Dude"> <Component Id="ProductComponent" Guid="17524da5-7862-470b-bffc-db6ce4a660a1"> <File Id="MainProgram" Name="Dude.cab" Source="$(var.dude.TargetPath)\Dude.cab" DiskId="1" > </File> <File Id="CeInstall" Name="DudeF.ini" Source="DudeF.ini" DiskId="1" > </File> <File Id="ReleaseTxt" Name="release.txt" Source=".\release.txt" /> </Component> </Directory> </Directory> </Directory> </Directory> So far, so good. The UAC consent pops up on vista, and then the files end up in their correct location. Then it's time to run the CEAPPMGR command to load the files onto the device. I tried deferred actions, etc, but to no avail. First the solution so far, then the questions at the bottom: In the end I had to resort to this: <InstallExecuteSequence> <Custom Action='RegisterWithDevice' After="InstallFinalize">NOT Installed </Custom> </InstallExecuteSequence> <CustomAction Id="RegisterWithDevice" ExeCommand='"[CEAPPMGR]" "[INSTALLLOCATION]DudeF.ini"' Directory="INSTALLLOCATION" Return="ignore"/> Unfortunately, this only works if you're running as an administrator, and if you set <Property Id="ALLUSERS" Value="1"></Property> ************ My Questions: ************ CEAPPMGR seems to require it to be run with admin privileges. I've already specified that the msi file run elevated, but the actions seem to run as the user, or in the namespace of the administrator, which still causes the program not to be installed for the current user. Is there a better way around this? Do I need to build a special EXE to run that does the dirty work, which requests the elevation in its manifest instead. Secondly, is there a really good description anywhere of what the difference between per user and per machine installs actually is? When I ran the install from an elevated command prompt, it installed on my device, but then when I next started the app manager on my account, it tried to install the software again. (not sure why). Clearly, this isn't quite right either. I've gotten in such a mess trying to get this simple thing right so that it's easy for my users to do. I've filled up my system restore log, and lost all prior install points except for the last 20 or so, which are all installing and uninstalling this. To make matters worse, it then decided it wouldn't uninstall, and I had to resort to a rollback, which caused some other installers to be abandoned. I'm starting to wonder if I should go back to the old procedural way of doing things, and copy the cab file into the right location, then run CEAPPMGR. Anthony Wieser Wieser Software Ltd ------------------------------------------------------------------------- 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