I am using WiX 3.0.2925 to create an installer, and I am having a very hard
time getting file associations to work correctly. My case may be a little
strange, and I am not sure if Windows Installer even supports it. Basically,
I have an application that can be launched in two different contexts:
desktop and clustered. The desktop launching is done using a batch file
while the clustered launching is done using an external application. If that
external application is installed, then I need to add an extra verb for my
file extension in the registry. I use RegistrySearch to determine if the
external application is installed, though I do not yet have that working
very well yet.

I have tried to do this a number of ways, and they all cause the installer
to crash in one way or another. Currently, I am just trying to set up the
simple case where the batch file is used. If the following component is
included in a feature, it works (though I have not gotten the icon stuff
sorted out yet):

    <Fragment>
        <DirectoryRef Id="app">
            <Component Id="desktop.bat_1" Guid="{...}">
                <Condition>
                    CLUSTERGUI = "" OR PYTHONDIR = ""
                </Condition>
                <File Id="desktop.bat" Name="desktop.bat" KeyPath="yes"
                      Source="dist\app\desktop.bat" />
                <ProgId Id="myapp.myext" Description="MyApp Document"
                        Advertise="yes">
                    <Extension Id="myext"
                               ContentType="application/myapp-myext+xml">
                        <Verb Id="openBatchFile"
                              Command="Open in MyApp (Desktop)"
                              Argument="&quot;%1&quot;" />
                    </Extension>
                </ProgId>
            </Component>
        </DirectoryRef>
    </Fragment>

This fragment, however, causes a crash:

    <Fragment>
        <DirectoryRef Id="app">
            <Component Id="desktop.bat_1" Guid="{...}">
                <Condition>
                    CLUSTERGUI = "" OR PYTHONDIR = ""
                </Condition>
                <File Id="desktop.bat" Name="desktop.bat" KeyPath="yes"
                      Source="dist\app\desktop.bat" />
                <ProgId Id="myapp.myext" Description="MyApp Document">
                    <Extension Id="myext"
                               ContentType="application/myapp-myext+xml">
                        <Verb Id="openBatchFile"
                              TargetProperty="[!desktop.bat]"
                              Command="Open in MyApp (Desktop)"
                              Argument="&quot;%1&quot;" />
                    </Extension>
                </ProgId>
            </Component>
        </DirectoryRef>
    </Fragment>

The reason that I want to use the TargetProperty of the Verb element is so
that I can do the following as the other condition:

    <Fragment>
        <DirectoryRef Id="app">
            <Component Id="desktop.bat_2" Guid="{...}">
                <Condition>
                    CLUSTERGUI &lt;&gt; "" AND PYTHONDIR &lt;&gt; ""
                </Condition>
                <File Id="desktop.bat" Name="desktop.bat" KeyPath="yes"
                      Source="dist\app\desktop.bat" />
                <ProgId Id="myapp.myext" Description="MyApp Document">
                    <Extension Id="myext"
                               ContentType="application/myapp-myext+xml">
                        <Verb Id="openCluster"
                              TargetProperty="[PYTHONDIR]\pythonw.exe"
                              Command="Open in MyApp (Cluster)"
                              Argument="..." />
                        <Verb Id="openBatchFile"
                              TargetProperty="[!desktop.bat]"
                              Command="Open in MyApp (Desktop)"
                              Argument="&quot;%1&quot;" />
                    </Extension>
                </ProgId>
            </Component>
        </DirectoryRef>
    </Fragment>

I have tried other variations where I use separate components to contain the
two Verb elements or where I separate the ProgId from the component
containing the File element. Nothing works, and all I can conclude at this
point is that I am doing something wrong or I am trying to do something that
WiX does not allow.

Am I simply on the wrong path with trying to have conditional verb addition
for a file association? If so, is there some other approach that I could try?

 -Patrick


-- 
Patrick L. Hartling
VP Engineering, Infiscape Corp.
http://www.infiscape.com/

Attachment: signature.asc
Description: OpenPGP digital signature

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to