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;
4 Réponses :
Essayez ceci: ou: p>
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 Code>
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
bâtiment sur la réponse @kobik a donné. J'ai dû inclure le ".exe" dans le nom de fichier.
Comme:
@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 code> nom de fichier code>. 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 code>
. 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!
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;
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}; code>