приложение wix c # не запускается после установки - PullRequest
0 голосов
/ 10 сентября 2018

Я уже успешно сгенерировал и успешно установил свое приложение C # WPF с Wix. Приложение включает в себя Crystal Report DLL и некоторые другие DLL, такие как Zen Barecode. После n-й попытки изменить основной проект MSI может установить себя, но при запуске приложения либо из ярлыков, либо непосредственно из исполняемого файла оно не запускается.

Вот мой wix product.wxs

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product Id="*"
           Name="MyApp 1.0.0"
           Language="1036"
           Codepage="1252"
           Version="1.0.0"
           Manufacturer="My Company"
           UpgradeCode="PUT-GUID-HERE">
    <Package InstallerVersion="200"
             Compressed="yes"
             InstallScope="perMachine"
             Description="Some description"
             Keywords="Some keywords"
             Comments="(c) some comments"
             />

    <MajorUpgrade DowngradeErrorMessage="La dernière version de MyApp est déjà installée" />
    <MediaTemplate EmbedCab="yes" />

    <Icon Id="icon.ico" SourceFile="$(var.InstallFolderPath)\logo.ico"/>

    <Feature Id="ProductFeature" Title="TPI SOFT" Level="1">
      <ComponentGroupRef Id="ProductComponents" />
      <ComponentGroupRef Id="LibrariesComponents" />
      <ComponentGroupRef Id="CustomFonts" />
      <ComponentRef Id="CMP_MenuShortcut" />
      <ComponentRef Id="CMP_DesktopShortcut" />
    </Feature>

    <Property Id="ARPPRODUCTICON"
              Value="icon.ico" />

    <Property Id="ARPCONTACT"
              Value="My Contact"/>

    <PropertyRef Id="NETFRAMEWORK45"/>
    <Condition Message="Ce logiciel requiert l'installation préalable de Microsoft .NET Framework 4.5 ou plus.">
      <![CDATA[Installed OR NETFRAMEWORK45]]>
    </Condition>

    <Condition Message="Ce logiciel tourne sur tous les systèmes Windows à partir de Windows Vista">
      <![CDATA[Installed OR VersionNT >= 600]]>
    </Condition>

    <Property Id="WIXUI_INSTALLDIR" Value="APPLICATIONFOLDER" />
    <UIRef Id="WixUI_InstallDir" />

    <WixVariable Id="WixUILicenseRtf"
                 Value="$(var.InstallFolderPath)\licence.rtf" />

    <WixVariable Id="WixUIDialogBmp"
                 Value="$(var.InstallFolderPath)\dialog_bmp.bmp"/>

    <WixVariable Id="WixUIBannerBmp"
                 Value="$(var.InstallFolderPath)\top_banner.bmp"/>

    <Property Id="ApplicationFolderName"
              Value="MyApp\MyApp" />

    <Property Id="WixAppFolder"
              Value="WixPerMachineFolder" />

  </Product>

  <Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="COMPANYFOLDER" Name="My Company">
          <Directory Id="APPLICATIONFOLDER" Name="My App 1.0.0">
          </Directory>
        </Directory>
      </Directory>

      <Directory Id="ProgramMenuFolder">
        <Directory Id="MyStartMenuShortcutDir"
                   Name="My App"/>
      </Directory>

      <Directory Id="DesktopFolder">

      </Directory>

      <Directory Id="FontsFolder">

      </Directory>
    </Directory>
  </Fragment>

  <Fragment>
    <ComponentGroup Id="ProductComponents" Directory="APPLICATIONFOLDER">
      <Component Id="cmp436C9F728138518252041AF1E09808A9" Guid="PUT-GUID-HERE">
        <File Id="filC9EEE3E54616B953432FF36EDA3020A3" KeyPath="yes" Source="$(var.MyApp.TargetDir)MyApp.exe" />
      </Component>
      <Component Id="cmp840D318334E734AB5C8FA4C807C4CB95" Guid="PUT-GUID-HERE">
        <File Id="filE698BF079DEBA8E2BC7F2E69833E372D" KeyPath="yes" Hidden="yes" Source="$(var.MyApp.TargetDir)MyApp.exe.config" />
      </Component>

      <Component Id="CMP_Licence"
                 Guid="558784B2-E92A-4686-95BD-A034E859E8A7">
        <File Id="licence"
              Source="$(var.InstallFolderPath)\licence.rtf"
              KeyPath="yes" />
      </Component>
    </ComponentGroup>

    <ComponentGroup Id="CustomFonts" Directory="FontsFolder">
      <Component Id="CMP_DigitalFont"
                 Guid="PUT-GUID-HERE">
          <File Id="digitalFont"
                Source="$(var.FontFolderPath)\digital-7.ttf"
                TrueType="yes"
                KeyPath="yes" />
      </Component>
    </ComponentGroup>

    <Component Id="CMP_MenuShortcut"
               Directory="MyStartMenuShortcutDir"
               Guid="PUT-GUID-HERE">

      <Shortcut Id="MenuShortcut"
                Name="MyApp 1.0.0"
                Description="Lance le logiciel MyApp"
                Target="[APPLICATIONFOLDER]MyApp.exe"
                WorkingDirectory="APPLICATIONFOLDER"
                Icon="icon.ico"/>

      <RemoveFolder Id="RemoveMyStartMenuShortcutDir"
                    On="uninstall" />
      <RegistryValue Root="HKCU"
                    Key="Software\MyApp"
                    Name="installed"
                    Type="integer"
                    Value="2"
                    KeyPath="yes" />
    </Component>

    <Component Id="CMP_DesktopShortcut"
               Directory="DesktopFolder"
               Guid="PUT-GUID-HERE">
      <Shortcut Id="DesktopShortcut"
                Name="MyApp 1.0.0"
                Description="Lance le logiciel MyApp"
                Target="[APPLICATIONFOLDER]MyApp.exe"
                WorkingDirectory="APPLICATIONFOLDER"
                Icon="icon.ico"/>
      <RemoveFolder Id="DesktopFolder" On="uninstall"/>
      <RegistryValue
                 Root="HKCU"
                 Key="Software\MyApp"
                 Name="installed"
                 Type="integer"
                 Value="1"
                 KeyPath="yes"/>
    </Component>

  </Fragment>
</Wix>

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

После тщательного следования рекомендациям Stein по бинарной отладке (что заняло немного времени, так как это был мой первый раз), я прикрепил коробочное сообщение к последовательности выполнения моего приложения (именно в конструкторе класса App моего приложения WPF), затем точка останова непосредственно на инструкции, которая следует за окном сообщения. Затем я сгенерировал приложение, заново создал MSI, а затем установил MSI. После запуска исполняемого файла из ярлыка на рабочем столе появилось окно сообщения. Я ввел свой исходный код перед тем, как нажать на кнопку ОК в окне сообщения, и прикрепил процесс своего приложения (Отладка -> Присоединить к процессу). Проверка окна сообщения вернулась ко мне в Visual Studio, и я смог шаг за шагом следовать части кода, пока не вернулся к маленькой квартире.

0 голосов
/ 10 сентября 2018

ОБНОВЛЕНИЕ : проблема в отсутствующем параметре приложения в устаревшем файле конфигурации. Проблема конфигурации другими словами.Найдено путем подключения отладчика к запускаемому приложению.См. Ниже.


Ведение журнала : видите ли вы какие-либо подсказки в средстве просмотра событий или в каких-либо других средствах ведения журнала, которые создаютприложение предоставляет?Может быть, вы можете включить ведение журнала отладки для приложения через его файлы конфигурации или настройки реестра?

Контрольный список проблем запуска : я написал универсальный контрольный список проблем с запуском приложения в одной точке.Может быть, посмотрите и посмотрите, не звонит ли что-нибудь.

Отладка двоичных файлов - отладка последовательности запуска : вы можете вставить окно сообщения в начале вашего приложениязапустить последовательность и вставить двоичные файлы отладки в вашу установку, установить ее, а затем подключить отладчик к окну сообщения приложения при запуске, чтобы пройти через код запуска?(установите точку останова).

  • Может быть, посмотрите этот хороший Продвинутый видеоинсталлятор по установке для этого "подхода отладчика присоединения" .Это показывает тот же подход для кода настраиваемого действия.Процедура запуска приложений одинакова.Просто прикрепите к окну сообщения и установите точки останова.

  • Примечание : Очевидно, не забудьте перекомпилировать двоичные файлы релиза, как только вы узнаете, в чем проблема - и повторите тестирование при запуске.Отладочные двоичные файлы не подлежат распространению - они связываются с отладочными библиотеками, установленными только MS SDK.Обычные ПК не будут (обычно) иметь эти отладочные библиотеки (делая эту процедуру в основном из-за проблем с конфигурацией, а не из-за проблем во время выполнения).

Обновленный отказ от ответственности:

Отказ от ответственности : Хотя это очевидно, следует упомянуть: никогда не использовать отладкудвоичные файлы для фактического выпуска .1) Совсем не законно, 2) не очень хорошая идея из-за прозрачности и возможности обратного инжиниринга отладочных двоичных файлов, и 3)исполняемые двоичные файлы среды отладки не будут существовать в блоках, не предназначенных для разработчиков (и не будут соблазняться статической связью).И наконец: может быть легко забыть перестроить с помощью двоичных файлов релизов, когда вы возитесь с такой отладкой.Это обязательно произойдет.


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

...