Вопрос

I have a PathEdit control for folder that I intend to share as well. I want to allow user to enter UNC path as well in the same PathEdit control (which is supported).

The problem is, when UNC path is being entered, during installation it attempts to share it.

How can I make it not to share in case if its UNC path?

Here is code snippets:

PathEdit control definition:

<!-- Target audio files directory -->
        <Control Id="lblAudioFilesDirectory" Type="Text" X="20" Width="100" Y="135" Height="18" NoPrefix="yes" Text="!(loc.AudioFilesDirectoryLabel)" />
        <Control Id="peAudioFilesDirectory" Type="PathEdit" X="120" Width="180" Y="135" Height="18" Property="PROP_AUDIODIR" Indirect="yes" />
        <Control Id="btnAudioFilesDirectory" Type="PushButton" X="305" Width="20" Y="135" Height="18" Text="!(loc.Browse)">
          <Publish Property="_BrowseProperty" Value="[PROP_AUDIODIR]" Order="1">1</Publish>
          <Publish Event="SpawnDialog" Value="Custom_BrowseDlg" Order="2">1</Publish>
        </Control>

The Directory fragment:

<Directory Id="AUDIOFOLDER" Name="AudioFiles">
    <Component Id="cmpAUDIOFOLDER" Guid="{8BCFBEA2-9E7B-4E45-8838-6A71216C9B20}">
    <CreateFolder />
    <util:User Id="Everyone" Name="Everyone"></util:User>
    <util:FileShare Id="fsAudioFiles" Description="Audio files" Name="AudioFiles">
    <util:FileSharePermission User="Everyone" GenericAll="yes" />
    </util:FileShare>
    </Component>
</Directory>

Can I do some conditional work on

<util:User Id="Everyone" Name="Everyone"></util:User>
        <util:FileShare Id="fsAudioFiles" Description="Audio files" Name="AudioFiles">
        <util:FileSharePermission User="Everyone" GenericAll="yes" />
        </util:FileShare>

to make it work only if path is not UNC?

Это было полезно?

Решение

A Component is the atomic unit of install in the Windows installer so that is what you'll want to Condition. Assuming the Directory/@Id of the folder in question is AudioFiles you could do something like:

<Component Id="cmpAUDIOFOLDER" Guid="PUT-GUID-HERE"
           Directory="AudioFiles">
   <!-- If the AudioFiles directory starts with a double backslash, it's a network
        share, so share it with everyone. -->
   <Condition>AudioFiles &lt;&lt "\\"</Condition>

   <CreateFolder />
   <util:FileShare Id="fsAudioFiles" Description="Audio files" Name="AudioFiles">
     <util:FileSharePermission User="Everyone" GenericAll="yes" />
   </util:FileShare>
</Component>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top