Установите использование версии ASP.NET WiX

Это хорошо сработало для меня.

Стиль кнопки

<Style x:Key="TransparentStyle" TargetType="{x:Type Button}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Border>
                    <Border.Style>
                        <Style TargetType="{x:Type Border}">
                            <Style.Triggers>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter Property="Background" Value="DarkGoldenrod"/>
                                </Trigger>
                            </Style.Triggers>
                        </Style>
                    </Border.Style>
                    <Grid Background="Transparent">
                        <ContentPresenter></ContentPresenter>
                    </Grid>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Кнопка

<Button Style="{StaticResource TransparentStyle}" VerticalAlignment="Top" HorizontalAlignment="Right" Width="25" Height="25"
        Command="{Binding CloseWindow}">
    <Button.Content >
        <Grid Margin="0 0 0 0">
            <Path Data="M0,7 L10,17 M0,17 L10,7" Stroke="Blue" StrokeThickness="2" HorizontalAlignment="Center" Stretch="None" />
        </Grid>
    </Button.Content>
</Button>

Примечания

  • Кнопка отображает маленький синий крест, как и тот, который использовался для закрытия окна.
  • Установив фон сетки на «Прозрачный», он добавляет hittest, что означает, что если мышь в любом месте над кнопкой, тогда это сработает. Опустите этот тег, и кнопка загорится, если мышь находится над одной из векторных линий в значке (это не очень удобно).
25
задан Paul Lalonde 1 November 2008 в 21:44
поделиться

5 ответов

Мы используем это:

Первый определяют.Net корневой каталог платформы из реестра:

<Property Id="FRAMEWORKROOT">
  <RegistrySearch Id="FrameworkRootDir" Root="HKLM"
                Key="SOFTWARE\Microsoft\.NETFramework" 
                Type="directory" Name="InstallRoot" />
</Property>

Затем в компоненте, который устанавливает Ваш веб-сайт в IIS:

<!-- Create and configure the virtual directory and application. -->
<Component Id='WebVirtualDirComponent' Guid='{GUID}' Permanent='no'>
  <iis:WebVirtualDir Id='WebVirtualDir' Alias='YourAlias' Directory='InstallDir' WebSite='DefaultWebSite'  DirProperties='DirProperties'>
    <iis:WebApplication Id='WebApplication' Name='YourAppName' WebAppPool='AppPool'>
      <!-- Required to run the application under the .net 2.0 framework -->
      <iis:WebApplicationExtension Extension="config" CheckPath="yes" Script="yes"
                    Executable="[FRAMEWORKROOT]v2.0.50727\aspnet_isapi.dll" Verbs="GET,HEAD,POST" />
      <iis:WebApplicationExtension Extension="resx" CheckPath="yes" Script="yes"
                    Executable="[FRAMEWORKROOT]v2.0.50727\aspnet_isapi.dll" Verbs="GET,HEAD,POST" />
      <iis:WebApplicationExtension Extension="svc" CheckPath="no" Script="yes"
                    Executable="[FRAMEWORKROOT]v2.0.50727\aspnet_isapi.dll" Verbs="GET,HEAD,POST" />
    </iis:WebApplication>
  </iis:WebVirtualDir>
</Component>

Для x64 установщика ( ЭТО ВАЖНО ) Добавляют Win64 ='yes' к поиску реестра, потому что среда на 32 бита на машине на 64 бита имеет различную структуру данных реестра (и различный frameworkroot)

<RegistrySearch Id="FrameworkRootDir" Root="HKLM"
        Key="SOFTWARE\Microsoft\.NETFramework" 
        Type="directory" 
        Name="InstallRoot" Win64='yes' />
22
ответ дан Cheeso 15 October 2019 в 16:06
поделиться

Я нашел различный путь при помощи WiX WebApplicationExtension. Можно проверить полное решение здесь и здесь .

мне нравится Wix до сих пор, но человек делает требуется большое рытье для нахождения то, что Вы ищете.

1
ответ дан JasonS 15 October 2019 в 16:06
поделиться
  • Первая находка корректная папка версии.NET. Используйте DirectorySearch/FileSearch для выполнения поиска.

  • Использование вышеупомянутый путь, чтобы назвать aspnet_regiis.exe и установить версию для веб-приложения от пользовательского действия.

    aspnet_regiis.exe -s W3SVC/1/ROOT/SampleApp1

0
ответ дан Vivek 15 October 2019 в 16:06
поделиться

Вот что сработало у меня после борьбы с этим:

  <Property Id="FRAMEWORKBASEPATH">
     <RegistrySearch Id="FindFrameworkDir" Root="HKLM" Key="SOFTWARE\Microsoft\.NETFramework" Name="InstallRoot" Type="raw"/>
  </Property>
  <Property Id="ASPNETREGIIS" >
     <DirectorySearch Path="[FRAMEWORKBASEPATH]" Depth="4" Id="FindAspNetRegIis">
        <FileSearch Name="aspnet_regiis.exe" MinVersion="2.0.5"/>
     </DirectorySearch>
  </Property>

  <CustomAction Id="MakeWepApp20" Directory="TARGETDIR" ExeCommand="[ASPNETREGIIS] -norestart -s W3SVC/[WEBSITEID]/ROOT/[VIRTUALDIR]" Return="check"/>

  <InstallExecuteSequence>
     <Custom Action="MakeWepApp20" After="InstallFinalize">ASPNETREGIIS AND NOT Installed</Custom>
  </InstallExecuteSequence>

[WEBSITEID] и [VIRTUALDIR] - это свойства, которые вы должны определить самостоятельно. [VIRTUALDIR] необходим только в том случае, если вы устанавливаете версию ASP.NET для приложения, а не для всего веб-сайта.

Последовательность настраиваемых действий имеет решающее значение. Выполнение его до InstallFinalize приведет к его сбою, потому что веб-приложение недоступно до этого момента.

Спасибо Крису Берроузу за правильный пример поиска исполняемого файла aspnet_regiis (Google «Использование WIX для защиты строки подключения»).

jb

13
ответ дан 28 November 2019 в 20:54
поделиться

Не забудьте включить ASP 2.0 на сервере

<iis:WebServiceExtension Id="ExtensionASP2" Group="ASP.NET v2.0.50727" Allow="yes" File="[NETFRAMEWORK20INSTALLROOTDIR]aspnet_isapi.dll" Description="ASP.NET v2.0.50727"/>

Вот мягкий вопрос

5
ответ дан 28 November 2019 в 20:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: