Лучший способ создать wix файл фрагмента на основе Пользовательских каталогов, которые будут использоваться в MSBUILD

Вы не можете.

Кнопка «Назад» в браузере позволяет вам перейти на последнюю веб-страницу, к которой вы обращались, и не полностью сохраняет последнее известное состояние DOM. И большинство пользователей это понимают.

Лучше всего создать собственную навигацию для своей страницы - собственную кнопку «Назад».

Вы будете биться головой о стену, если попытаетесь перепрограммировать кнопку «Назад». Также обратите внимание, что вы ничего не можете сделать с: (а) пользователем, который покинул вашу страницу и затем вернулся; (b) щелчок правой кнопкой мыши на странице и выбор «НАЗАД» (отличается от кнопки «Назад»); (в) щелчок по закладке; (г) ввод в адресной строке; (e) Нажав кнопку «Назад» и выбрав сайт еще в истории браузера.

ОДНАКО, вы можете отключить кнопку «назад», заставляя пользователей использовать вашу полностью управляемую кнопку «назад», с помощью этого кода:

history.pushState(null, null, location.href);
window.onpopstate = function () {
    history.go(1);
};

Ссылка:

[1111 ] https://codepen.io/dhavalt10/pen/rGLBzB

https://www.codeproject.com/Articles/696526/Solution-to-Browser-Back -Button-Click-Event-Handli

https://www.sitepoint.com/community/t/when-back-button-clicked-redirect-to-url/224503/ 5

10
задан Community 23 May 2017 в 12:25
поделиться

3 ответа

Хорошо, Даниэль. Я определенно согласен с использованием тепла, но я думаю, что Роб указал мне правильное направление для того, что я в конечном итоге использовал.

В конечном итоге я использовал HeatDirectory. (Обратите внимание, я не планирую вносить исправления. Если вы хотите установить исправления, вы можете посмотреть другое решение, но каталог heat / heat может работать для исправления.) К сожалению, Ответ Роба был довольно ограниченным, поэтому я бы не сказал, что он действительно ответил на мой вопрос. Просто указал мне в правильном направлении. Спасибо и Робу, и Дэниелу за вашу помощь.

Поэтому я вернулся и сам ответил на этот вопрос.

Препятствия ...

Препятствие 1 Я столкнулся с тем, что в интернете почти нет документации о том, как реализовать каталог тепловых задач / тепла (Heat упакован в msbuild) из Visual Studio. Обратите внимание, что оболочка для запуска из msbuild выглядит довольно новой, и я отказываюсь использовать ее на свой страх и риск и т. Д. Из-за отсутствия документации я отправил электронное письмо в список пользователей wix. Я получил помощь от Брайана Роджерса. Спасибо Брайан, это решило все для меня. Взгляните на его великолепную запись в блоге, чтобы лучше понять, как тепло поможет вам автоматизировать: http://icumove.spaces.live.com/blog/cns!FB93073C6534B681!461.entry

Hurdle 2 Поработав с теплом, я обнаружил, что я не использую компоненты рекомендованным способом, но мне пришлось собрать воедино все рассуждения. Я думаю, что многие люди столкнутся с этим в начале использования Wix, если у вас нет предварительных знаний установщика Windows. Поэтому я рекомендую немного почитать: Убедитесь, что вы также читали правила для компонентов, если вы новичок, как я был с Windows Installer.Component rules от MS: http://msdn.microsoft.com/en-us/library/aa370561.aspx , Прочитайте их от Роба Меншинга для лучшего понимания компонентов: http://robmensching.com/blog/posts/2003/10/4/Windows-Installer-Components-Introduction http://robmensching.com / блог / сообщений / 2003/10/18 / Компонент-правила-101 Для дополнительного чтения в установщике Windows проверьте эти правила в команде установщика Windows (правило 16: следуйте правилам компонентов): http://blogs.msdn.com/windows_installer_team/archive/2006/05/12/595950.aspx

Препятствие 3 Вы должны решить, хотите ли вы вносить исправления в свои файлы или обновлять каждый раз, когда устанавливаете новую версию. К счастью, мне не нужно вносить исправления, поэтому при каждом обновлении я просто удаляю предыдущую версию, например, так: Как реализовать обновление установщика WiX? . Это значительно упрощает вещи. При исправлении вам понадобится полный контроль над вещами. Нечто более сложное, если вы хотите, чтобы автоматизация / автоматическая сборка была реализована многими разработчиками, которые ничего не знают о wix, кроме wix-сборок полей msi. Кажется, что это будет работать с использованием тепла, но я не уверен.

Препятствие 4 Мне потребовалось немного времени, чтобы выяснить, почему не работает файл включения с моими переменными препроцессора. Я наконец-то понял. Вы должны включить файл в ваш файл .wxs следующим образом: Смотрите здесь для более подробной информации: Включение содержимого текстового файла в скрипт WiX

http://wix.sourceforge.net/manual-wix2/preprocessor.htm

Препятствие 5 Так как я использую крупные обновления со смесью, и я хотел подключить Subversion к номеру моего продукта. Я думал, что это будет довольно просто, и это если вы знаете, как это сделать. У меня были проблемы здесь, и мне тоже пришлось получить помощь.

Препятствие 6 С тепловым обновлением файлов на основе папки bin все работает довольно хорошо. Ну, почти автоматически, если есть какие-либо конфликты в ссылках на dll и т. Д., То файлы не будут включены в установщик, и поэтому все может работать неправильно. У вас должен быть процесс тестирования, чтобы протестировать вашу программу после установки. Это может быть критично, если вы пропустите DLL. Я также рекомендовал бы вам отслеживать используемые dll программы и сравнивать их с файлом MSI.

Теперь для решения с использованием HeatDirectory (с помощью Брайана Роджерса (команда wix)):

 <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == ''">Debug</Configuration>
   <OutputName>msbuild.heatfile</OutputName>
   <OutputType>Package</OutputType>
   <WixToolPath>..\..\YourHeatDir</WixToolPath>
   <WixToolPath>$(WixToolPath)</WixToolPath>
   <Cultures>en-us</Cultures>
   <LinkerBaseInputPaths>..\..\data\HeatDir</LinkerBaseInputPaths>
 </PropertyGroup>
 <ItemGroup>
   <Compile Include="product.wxs" />
   <Compile Include="TestDir.wxs" />
 </ItemGroup>
 <Import Project="$(WixToolPath)\Wix.targets" />
 <UsingTask TaskName="HeatDirectory"
   AssemblyFile="$(WixToolPath)WixUtilExtension.dll" />
 <Target Name="BeforeBuild">
   <HeatDirectory
      Directory="..\..\data\HeatDir"
      DirectoryRefId="DataDir"
      OutputFile="TestDir.wxs"
      AutogenerateGuids="true"
      ToolPath="$(WixToolPath)" />
 </Target>

Это нужно вставить в файл вашего проекта и соответствующие настройки / пути должны быть изменены. Что это будет делать, это взять все файлы по указанному пути и создайте файл TestDir.wxs, на который вы затем сможете ссылаться по группе компонентов. Существует несколько опций Heatdirectory, которые вы можете увидеть для получения дополнительной информации.

Просто для справки: я нашел этот пост в stackoverflow после того, как опубликовал свой вопрос: Как добавить весь каталог или вывод проекта в пакет WiX Также для справки я только что увидел эту статью здесь: Сбор .csproj с heat.exe в Visual Studio 2008 и WiX (v3) . и снова это можно сделать, используя вместо этого задачи по нагреву.
Оба обсуждают использование сторонних инструментов. Один называется Мэллов, а другой - Парафин. Я думаю, что парафин выглядит поддерживаемым и может делать то же самое, что и тепло. С некоторыми дополнениями: Подробнее см. Здесь: http://www.wintellect.com/cs/blogs/jrobbins/archive/2007/10/18/wix-hints-for-new-users-part-1. -of-3.aspx

В любом случае надеюсь, что это поможет другим.

13
ответ дан 3 December 2019 в 22:01
поделиться

Новый HeatTasks мог бы работать очень хорошо на Вас здесь. Они могут вытянуть выходные группы проекта из других проектов в Visual Studio. Это делает намного лучше в последней сборке, чем более старые сборки, так убедиться забрать еженедельный http://wixtoolset.org/releases/.

3
ответ дан 3 December 2019 в 22:01
поделиться

Если это имеет значение мы, на самом деле, используем heat.exe от msbuild. Если Вы так же придирчивы, как я, вывод тепла, вероятно, не точно, что Вы хотите, но это легко исправить с преобразованием XSL (я полагаю, что heat.exe имеет параметр командной строки явно с этой целью).

0
ответ дан 3 December 2019 в 22:01
поделиться