Создавать установщики x86 и x64, используя один и тот же файл vdproj? - PullRequest
2 голосов
/ 25 мая 2009

Я хочу создать пакет x86 msi, а также пакет x64, используя тот же проект развертывания Visual Studio 2008.

Я вижу TargetPlatform в диалоговом окне свойств проекта и знаю, что могу использовать это для выбора x86 или x64 (или Itanium в этом отношении).

Проблема в том, что я не могу связать это свойство с конфигурацией проекта (?)

В идеале я хотел бы создать отдельные установщики MSI для x86 и x64, дважды выполнив devenv.exe из сценария сборки (пакетный файл), каждый вызов каким-то образом задает свойство TargetPlatform путем предоставления параметра.

Если возможно, я бы хотел избежать использования WIX или других сторонних инструментов.

Примечание. Я заметил, что различия между проектами развертывания x86 и x64 в основном следующие:

  • Папка \ DefaultLocation = ProgramFilesFolder (x86) | ProgramFiles64Folder (x64)
  • Product \ TargetPlatform = "3: 0" (x86) | «3: 1» (x64) | «3: 2» (Itanium)

Нужно ли создавать два отдельных проекта развертывания, чтобы создавать отдельные MSI-пакеты с использованием devenv.exe только из-за этих двух различий?

Полагаю, я мог бы использовать скрипт для внесения этих изменений перед каждым вызовом devenv.exe (?)

1 Ответ

2 голосов
/ 27 мая 2009

Когда у меня возникла эта проблема, мне пришлось использовать замену строки в файле vdproj перед выполнением команды devenv. Для замены я использовал задачу замены файла SDCTasks Тогда мой проект msbuild выглядел почти так:

<Project DefaultTargets="Default" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration>Release</Configuration>
<x86>3:0</x86>
<x64>3:1</x64>
<Import Project="$(SDCTasksPath)\Microsoft.Sdc.Common.tasks"/>
<Target Name="Default">
    <File.Replace Path="$(SolutionDirectory)Setup\Setup.vdproj" OldValue="%22TargetPlatform%22 = %22$(x86)%22" NewValue="%22TargetPlatform%22 = %22$(x64)%22" />
<Exec Command="devenv.exe $(SolutionDirectory)Solution.sln /build $(Configuration) /project $(SolutionDirectory)Setup\Setup.vdproj /projectconfig $(Configuration)"></Exec>
...