9
votes

Comment gérer le fichier .msi avec configuration Inno?

J'ai ce code suivant avec Inno Setup.

Mais comment puis-je appliquer cette fonction similaire au fichier .msi? p>

msiexec / i "\ package \ file.msi" / QB code>? Comment? P>

procedure AfterMyProgInstall(S: String);
var
  ErrorCode: Integer;
begin
  {MsgBox('Please wait the libraries are getting installed, ' +
          'without the libraries it wont work.', mbInformation, MB_OK);}
  ExtractTemporaryFile(S);
  {SW_SHOW, SW_SHOWNORMAL, SW_SHOWMAXIMIZED, SW_SHOWMINIMIZED, SW_SHOWMINNOACTIVE, SW_HIDE}
  ShellExec('', ExpandConstant('{app}\package\' + S), '', '', SW_SHOWNORMAL,
            ewWaitUntilTerminated, ErrorCode);
end;


0 commentaires

4 Réponses :


25
votes

Essayez ceci: xxx

ou: xxx


2 commentaires

Y a-t-il un moyen de désinstaller automatiquement le MSI dans le cadre de l'innosetup Désinstaller la routine?


Alternativement, utilisez le drapeau shellexec: nom de fichier: "{tmp} \ file.msi"; Paramètres: "/ qb"; Drapeaux: Shellexec



4
votes

note forte> que: J'utilise Inno Setup 5.5.3 sous Windows 7, et que ce code est pour le script Inno Setup dans la section Exécution. Avec ce code, vous pouvez Exécutez les fichiers MSI code> sans aucun problème. Voici le code:

[Run]
Filename: `{src}\PhysX.msi;` Description: Nvidia PhysX; Verb: open; Flags: shellexec postinstall waituntilterminated runascurrentuser skipifsilent


0 commentaires

4
votes

bâtiment sur la réponse @kobik a donné. J'ai dû inclure le ".exe" dans le nom de fichier. Comme: xxx


5 commentaires

@Mike, évidemment kobik "n'a pas montré le code entier". C'est au plus un commentaire ... En outre, ne serait-il pas préférable de laisser le shell de Windows ouvrir le fichier par lui-même? Je veux dire, juste passer le nom de fichier MSI Package au paramètre nom de fichier . Shell gérera ceci si Windows Installer est installé et que les packages MSI sont enregistrés pour être exécutés par celui-ci.


@Tlama merci de m'aider avec la culture de la contribution de Stackoverflow, je suis noob. Pourriez-vous clarifier si cette discussion appartient à des commentaires ou dans une zone «Meta» du site. Re: votre suggestion suppléante, je ne comprends pas; S'il vous plaît fournir un exemple. J'ai posté du code que j'ai trouvé travailler, j'espère que cela aide les autres. Spécifiquement, "Windows Installer est installé et les packages MSI sont enregistrés pour être exécutés par celui-ci." Comment savoir si cela est vrai sur mon système?


@mike, pas de soucis. Gardez votre réponse ici car cela pourrait ajouter un détail important à la réponse acceptée (laissez-moi juste corriger une chose ...). À propos de l'ouverture du fichier MSI, je voulais le faire de cette façon . Mais je n'ai pas essayé (encore).


@Tlama a juste compris pourquoi je ne pouvais pas faire un commentaire. Je n'ai pas le score de réputation à le faire.


@Mike, oui, il est dommage que les commentaires ont été victimes d'abus dans le passé, il existe donc ces limites de réputation fixées, même pour les personnes qui essaient juste d'aider. J'espère que vous allumerez votre réputation de sorte que vous allez supprimer toutes les restrictions «ennuyeuses». Bonne chance et bienvenue à Stackoverflow!



2
votes

Bien que l'option de Kobik utilise "msiexec.exe / i" dans la section Exécution fonctionne généralement, nous avons rencontré un problème d'administrateur DROIT DROITYGRADE avec celui-ci:

[Run]
Filename: "{tmp}\file.msi"; Flags: skipifsilent shellexec waituntilterminated hidewizard; 


1 commentaires

J'ai eu le même problème d'autorisations, l'après avoir utilisé Shellexec, donne toujours la même erreur. nom de fichier: "{tmp} \ fichier.msi"; Paramètres: "/ qb"; Drapeaux: Shelllexec PatintillerMinated; WorkingDir: {TMP};