Hi,
 
I'm trying to figure out how to use xmlfile to add a standard
<add key="..." value="..."/>
 element to a standard .config file that originally looks like this:
 
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0";>
  <appSettings>
     ....
  </appSettings>
</configuration>
 
I have it creating the <add> elements and their attributes ok but it is also 
adding an xmlns="" attribute.
Presumably this is actually correct because I haven't specified a namespace for 
my add element and the default namespace is not empty. Does anyone know how to 
get xmlns to add an element using the default namespace?
 
I don't see anything in the <XmlFile> reference indicating namespace. I'm 
assuming this means you're supposed to include the namespace prefix on the 
element name at createElement time but this namespace has no prefix.
 
thanks

 
________________________________

From: [EMAIL PROTECTED] on behalf of Anthony Wieser
Sent: Sun 3/25/2007 10:26 AM
To: wix-users@lists.sourceforge.net
Subject: [WiX-users] Custom actions and per user installs, and UAC problems



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


-------------------------------------------------------------------------
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

Reply via email to