2009-12-05 3 views
0

Si j'exécute le compilateur Inno Setup à partir d'un fichier de ligne de commande/batch, il crée un exe avec les informations de version dans le nom du fichier.Pourquoi le compilateur Inno Setup ne définit pas correctement les informations de version de hudson?

Cependant, lorsque je cours depuis hudson (même ligne de commande) je ne reçois pas les informations de version.

Peut-être qu'il me manque quelque chose.

Est-ce un problème connu?

This is the way I am doing it dans le fichier de script iss.

#define FileVerStr GetFileVersion(SrcApp) 

EDIT:

Les vars env sont tous ensemble pour tous les utilisateurs - pas seulement mon login - donc le service a accès à tout ce que la construction de la ligne de commande fait.

EDIT: Voir ma réponse pour une résolution de ceci.

Répondre

0

Je ne sais pas exactement comment décrire comment j'ai "réparé" cela/travaillé autour d'elle.

Il semble que la méthode GetFileVersion() n'utilise pas le même chemin de base que l'autre partie de la fonctionnalité Inno qui détermine où se trouvent les fichiers sources/fichiers installables.

Les mêmes chemins relatifs utilisés pour:

// this is for determining what files get put into the install image 
[Files] 
Source: ..\Build\ForRelease\MyExeName.exe; DestDir: {app} 

et

#define SrcApp "..\Build\ForRelease\MyExename.exe" 
#define FileVerStr GetFileVersion(SrcApp) 

apparemment ne pas utiliser le même mécanisme pour résoudre le nom de fichier/chemin. Donc ce que j'ai fait pour contourner ce problème était de copier le fichier exe qui contient les informations de version dans deux emplacements différents (en dehors de .. \ Build \ ForRelease) - celui où hudson démarre les processus et aussi le chemin où le script inoo est. (Je suis trop paresseux pour trouver celui qui fait tout fonctionner

Encore une fois, cela fonctionne très bien avec mon fichier batch, mais pas avec hudson.Il s'agit d'une étrange interaction avec le fonctionnement d'Inno.

1

Vous utilisez probablement Hudson sous Windows étant donné la technologie mentionnée. Quand il y a un décalage entre ce qui se passe sur la ligne de commande et ce que Hudson fait, c'est souvent parce que Hudson fonctionne comme un service sous Windows. Cela signifie qu'il s'exécute en tant qu'utilisateur de service, ce qui est distinct de votre compte de connexion.

Je rechercherais une variable d'environnement que vous avez définie dans votre profil utilisateur et qui pourrait activer ce comportement, qui n'est pas défini pour l'utilisateur du service.

+0

Ah, oui, je l'ai déjà rencontré. Mais je ne suis pas sûr de savoir comment cela se rapporte aux fonctionnalités manquantes dans inno.Peut-être que l'outil ne fonctionne pas correctement à cause d'une variable d'environnement? Je suppose que je peux essayer d'exécuter hudson en tant que processus sur mon compte utilisateur et voir ce qui se passe. Je ne suis pas sûr exactement comment faire cela ou d'autres façons de diagnostiquer et de résoudre le problème si c'est effectivement la cause. – Tim

+0

Oui, je cours hudson sur une boîte de Windows pour ce projet particulier. – Tim

+0

Les variables d'environnement sont toutes disponibles pour le service - rien n'est défini pour mon utilisateur local. Autre que hudson engendrant le processus, je ne vois rien de différent. – Tim

3

comme « tim » a dit, alors les chemins relatifs ne fonctionne pas comme prévu pour définit.

#define MyAppVer GetFileVersion(SourcePath + "\..\Build\Release\MyExeName.exe") 
#if MyAppVer == "" 
    #error MyAppVer - Version information not found! 
#endif 

préfixer avec SourcePath alors le chemin relatif commencera à partir du chemin où le InnoSetup script est situé

Questions connexes