Разве WiX Toolset не предназначен для развертывания проектов C ++? - PullRequest
0 голосов
/ 18 февраля 2020

Я ссылаюсь на следующий учебник для создания проекта установки для WiX v3, однако большинство учебников по WiX в inte rnet ориентированы на приложение C# в качестве базового проекта. В настоящее время я создаю приложение Visual C ++ 17 Win32, которое я хочу развернуть (т.е. создать установщик *.msi) с помощью WiX, учитывая, насколько мощный WiX.

К сожалению, добавление ссылки на мой проект C ++ приводит к восклицательному знаку желтого взрыва: enter image description here

Более того, например, при попытке ссылки на файл значка, например, в файле Product.wxs с использованием $(var.TimeTrack.ProjectDir)\TimeTrack.ico сообщается, что это « неопределенная переменная предшественника ». Я попытался выгрузить проект установки WiX и попытался проверить, что ссылка на проект Visual C ++ с желтыми полосками ссылается на правильный путь в файле *.wixproj. Путь включения, по-видимому, правильный:

<ItemGroup>
    <ProjectReference Include="..\TimeTrack\TimeTrack.vcxproj">
    <Name>TimeTrack</Name>

    <!-- More not shown. -->
</ItemGroup>

Я немного покопался и пролистал эту публикацию StackOverflow , которая указала, что WiX зависит от. NET framework. Кроме того, кажется, что на этом топи c есть много очень старых сообщений (например, пример 1 ), и я просто не совсем уверен, что я что-то здесь неправильно понимаю. Согласно этой записи , проект WiX не может ссылаться на какой-либо код C / C ++, но, похоже, это относится к " Настраиваемым действиям ", которые выглядят совершенно другими топиками c (?).

В общем, я что-то делаю неправильно или WiX не способен развертывать приложения C ++? Предназначен ли WiX только для развертывания C# приложений?

1 Ответ

1 голос
/ 18 февраля 2020

WiX зависит от разработки. NET, но не зависит от времени установки.

Файлы - это файлы. WiX не волнует, если они C, C ++, VB, PowerBuilder, Delphi,. NET, NodeJS, Электрон или что-то еще.

Основные различия для. NET против C / C ++:

1). NET обычно требует, чтобы вы проверили, установлен ли. NET, или создаете загрузчик для его установки.

2). NET core обычно может быть упакован вместе с приложением в частном порядке без общесистемной установки. NET core.

3) C / C ++ обычно требует установки VCRedist через загрузчик или статической привязки файлов в вашем приложении.

4). NET - это AnyCPU, где C / C ++ компилируется для платформы. MSI скомпилирован для платоформы. Это означает, что для. NET один MSI x86 может развернуть приложение. NET, которое может работать в 32-битном или 64-битном режиме в зависимости от того, как оно было построено. Для C / C ++ вам может понадобиться создать 32-битный MSI и 64-битный MSI для вашего приложения.

У меня есть инструмент FOSS, который помогает с изучением и разработкой WiX. Вы можете прочитать об этом здесь:

http://www.github.com/iswix-llc/iswix-tutorials

В учебных руководствах только C# примеров, но запросы на получение приветствуются. Создайте свое приложение на C / C ++ и используйте команду postbuild copy, чтобы поместить файлы в папку Installer \ Deploy, а все остальное в основном совпадает.

...