2017-07-07 6 views
1

J'ai un wixproj qui crée un MSI, avec des références à un csproj. Ceci est construit sur TeamCity, avec un certain nombre d'étapes de construction:Comment construire un msi en utilisant wix sans reconstruire les projets référencés?

  • NuGet installer
  • csproj Build (cibles par défaut)
  • Run de signtool sur construit .exe
  • wixproj Build (cibles par défaut)
  • Run signtool sur .msi construit

le msi se signé, mais une fois installé, le fichier .exe est pas. En examinant cela, il s'avère que l'exécution de msbuild avec les cibles par défaut sur le wixproj reconstruit l'exe, en remplaçant celui signé.

J'ai essayé de changer les objectifs de l'étape de génération wixproj, mais « bougie » est inconnue, et les erreurs « Compile » out avec « Undefined variable de préprocesseur « $ (var.App.TargetPath) » »

+0

Comment exécutez-vous signtool pour signer l'exe construit? Pouvez-vous mettre cette signature de l'exe comme un setp dans la cible "AfterBuild"? –

+0

J'ai une étape de construction qui exécute '% SdkPath% \ signtool signe/a% WorkDir% \% Projet% \ bin \% Configuration% \% Exécutable%' Je préfère éviter de placer ceci dans le fichier de projet, car il est uniquement pertinent pour le serveur de génération et non pour une machine de développement. –

Répondre

0

J'ai trouvé Ajout d'une option de ligne de commande /p:BuildProjectReferences=false à l'étape de génération a résolu mon problème. Une solution de contournement pour cela à Build MSBuild target without dependencies

Cependant, le journal de construction donne maintenant cet avis:

MSBuild command line parameters contain "/property:" or "/p:". It is recommended to define System Property on Build Parameters instead.

Mais comme je ne peux pas ajouter ce paramètre à toutes les étapes de construction, qui ne sont pas une option pour moi.