Question

j'ai ce qui suit CustomAction:

<CustomAction Id="CopyToSystem32" ExeCommand="copy /y 64bits.txt C:\Windows\System32" Directory="INSTALLFOLDER" Impersonate="no" Execute="deferred" Return="asyncWait" />

<InstallExecuteSequence>
  <Custom Action="CopyToSystem32" After="InstallFiles" >VersionNT64</Custom>
</InstallExecuteSequence>

Ainsi, lorsqu'il détecte un système d'exploitation 64 bits, il copie un fichier dans le dossier System32.Si je l'exécute avec un fichier .bat, cela fonctionne bien.Mais je préférerais que ce soit une commande batch.

Le journal indique ce qui suit :

MSI (s) (74:AC) [10:08:33:473]: Executing op: ActionStart(Name=CopyToSystem32,,)
Action 10:08:33: CopyToSystem32. 
MSI (s) (74:AC) [10:08:33:473]: Executing op:         CustomActionSchedule(Action=CopyToSystem32,ActionType=3234,Source=C:\Program Files    (x86)\SetupProject\,Target=copy /y 64bits.txt C:\Windows\System32,)
MSI (s) (74:AC) [10:08:33:474]: Executing op:     ActionStart(Name=RegisterProduct,Description=Registering product,Template=[1])
Action 10:08:33: RegisterProduct. Registering product
MSI (s) (74:AC) [10:08:33:474]: Executing op: ChangeMedia(,MediaPrompt=Please insert the disk:     ,MediaCabinet=1\cab1.cab,BytesPerTick=0,CopierType=1,,,SignatureRequired=0,,,IsFirstPhysicalMedia=1)
MSI (s) (74:AC) [10:08:33:474]: Executing op:     DatabaseCopy(DatabasePath=C:\Windows\Installer\32ea43.msi,ProductCode={0C013216-61FB-4283-AF0A-    6CB264019F5B},,,)
MSI (s) (74:AC) [10:08:33:474]: Note: 1: 1402 2:     UNKNOWN\Products\612310C0BF163824FAA0C62B4610F9B5\InstallProperties 3: 2 
1: CopyToSystem32 2: 1631    

Une idée sur pourquoi mon ExeCommand je ne copie pas mon fichier ?

Merci!

Était-ce utile?

La solution

Autant que je sache copy fait partie de l'interpréteur de shell de commande et n'est pas une commande en soi.Par exemple, vous pouvez vérifier ceci si, par ex.fait une dir copy.* /s dans le Windows-dossier.Il n'existe aucun fichier qui implémente indépendamment copy.Ce que tu peux faire:ajoutez l'invocation de l'interpréteur de commandes, par exemple :

cmd /c copy /y 64bits.txt C:\Windows\System32

Le /c-parameter indique à l'interpréteur de se fermer après l'exécution (vous pouvez également utiliser le [%COMSPEC]-variable d'environnement au lieu de cmd).Vous pouvez également utiliser le CAQuietExecute action personnalisée pour empêcher le pop-up cmd, comme décrit ici.
Peut-être que vous pourriez aussi simplement utiliser le CopyFile-élément pour votre tâche ?De cette façon, vous n'avez pas à vous soucier de la fenêtre shell, etc.

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