InstallShield 2009 Premier numéro une action personnalisée dans Vista Édition Familiale / Premium / Édition Intégrale

StackOverflow https://stackoverflow.com/questions/876734

  •  22-08-2019
  •  | 
  •  

Question

Environnement: Install Shield 2009 Premier, Vista (Home / Premium, Édition Intégrale)

J'ai une action personnalisée dans Install Shield 2009 qui le feu lors de l'installation. Si setup.exe est exécuté son bien, mais quand exécuter le MyApplication.msi dans Vista (s'il vous plaît noter dans les autres OS les actions personnalisées fonctionnent très bien), il montre exception l'exécution de l'action personnalisée. Action personnalisée est juste un exe exécute avec des arguments de ligne de commande.

Ce exe exécute très bien individuellement dans ce système d'exploitation. Mais quand MyApplication.msi veut l'exécuter, il montre une exception.

Je pense que: MyApplication.msi ne peut pas donner cette action personnalisée (fichier .exe) privilège approprié (administratif) pour fonctionner avec. Mais setup.exe peut.

Comment peut-il être résolu ...?


Dans l'assistant d'action personnalisé pour mon action personnalisée, pour la valeur « exécution In-Script » J'ai choisi « exécution différée Dans contexte système »

Était-ce utile?

La solution

Vous n'avez pas dit, mais il semble que votre setup.exe a un manifeste qui nécessite des privilèges d'administrateur (si vous obtenez une invite UAC lorsque vous lancez setup.exe, c'est le cas). Il semble également probable que l'exe que vous essayez d'exécuter à partir de votre action personnalisée a une exigence de privilèges administratifs similaires. Une action personnalisée exe dans MSI utilise CreateProcess qui ne peut pas élever.

Si votre action va dans la séquence de l'interface utilisateur, vous devez utiliser ShellExecute ou ShellExecuteEx en quelque sorte -. Cela peut se faire avec une action personnalisée InstallScript utilisant LaunchApplication avec le LAAW_OPTION_USE_SHELLEXECUTE de drapeau, ou C ++ qui appelle ShellExecuteEx directement

Si votre action va dans la séquence d'exécution, vous devez marquer « différée dans le contexte du système » de sorte qu'il est lancé à partir d'un contexte élevé pour commencer. Ceci est généralement préféré (au moins en termes d'expérience utilisateur), car il évite le contrôle de compte supplémentaire invite que l'autre méthode montrera. Cependant toute action différée a des limites (comme l'accès à la propriété minimum), vous devrez peut-être vous familiariser avec.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top