Domanda

Ho il seguente 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>
.

Quindi quando rileva un sistema operativo 64 bit, copierà un file nella cartella System32.Se lo eseguo con un file .bat, funziona bene.Ma preferirei che sia un comando batch.

Il registro dice quanto segue:

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    
.

Qualche idea sul perché il mio ExeCommand non copia il mio file?

Grazie!

È stato utile?

Soluzione

AFAIK copy fa parte del comando interprete di shell e non un comando da solo.E..g Puoi controllarlo se ad es.Fai un dir copy.* /s nella cartella Windows.Non vi è alcun file che implementa in modo indipendente copy. Cosa puoi fare: Antepondere l'invocazione dell'interprete di comando, ad esempio.:

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

Il parametro /c indica all'interprete di chiudere dopo l'esecuzione (è possibile utilizzare anche la variabile [%COMSPEC]-Ambiente anziché cmd).È inoltre possibile utilizzare l'azione personalizzata CAQuietExecute per impedire il popup CMD, come descritto qui .
Forse potresti anche semplicemente usare il CopyFile-Element per il tuo compito?In questo modo non devi affrontare la finestra Shell ecc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top