que metaetiqueta ejemplos dudas cursiva c# wix bootstrapper burn

c# - metaetiqueta - tags h2



Wix: la lĂ­nea de comandos gestionada de BA no es efectiva (2)

La clave es recoger el indicador de -quiet y no mostrar una IU, sino simplemente ejecutar la acción solicitada.

Esto se expone a través de la clase base Bootstrapper utilizando la propiedad DisplayMode , que usa un valor enum Display . Las opciones son

public enum Display { Unknown, Embedded, None, Passive, Full, }

A continuación, puede determinar qué acción ejecutar a través del valor Command.Action (de nuevo, en la clase base Bootstrapper) que utiliza una enumeración LaunchAction . Las opciones son:

public enum LaunchAction { Unknown, Help, Layout, Uninstall, Install, Modify, Repair,

}

Por lo tanto, he utilizado una propiedad personalizada que RunningSilent para detectar los modos en los que no debería mostrar una IU, y luego la uso como se muestra a continuación:

/// <summary> /// True if running in silent display mode (ie: no UI). /// </summary> public virtual bool RunningSilent { get { return (DisplayMode != Display.Full && DisplayMode != Display.Passive); } } protected override void Run() { if (RunningSilent) { Log("Running without UI"); LaunchAction requestedAction = Command.Action; //... this is an async call, so handle it accordingly. Engine.Plan(requestedAction); //... followed by Engine.Apply(); } else { Log("Showing UI window"); //.. Run your Managed UI } }

Mientras jugaba con TestBA Bootstrapper de Bryan , primero instalé 1.0.0.0. Luego incrementé la versión a 1.0.0.1 y registré el proceso. Aquí está la parte donde se pasó la línea de comando -uninstall -quite durante la actualización:

[2870:21C0][2014-02-24T17:46:38]i300: Apply begin [1A44:1E54][2014-02-24T17:46:41]i360: Creating a system restore point. [1A44:1E54][2014-02-24T17:47:15]i361: Created a system restore point. [1A44:1E54][2014-02-24T17:47:15]i000: Caching bundle from: ''C:/Users/fwaheed/AppData/Local/Temp/{57a07296-0310-4628-971c-2da38aa09f25}/.be/BootstrapperSetup.exe'' to: ''C:/ProgramData/Package Cache/{57a07296-0310-4628-971c-2da38aa09f25}/BootstrapperSetup.exe'' [1A44:1E54][2014-02-24T17:47:15]i320: Registering bundle dependency provider: {57a07296-0310-4628-971c-2da38aa09f25}, version: 1.0.0.1 [1A44:2B40][2014-02-24T17:47:16]i305: Verified acquired payload: DummyInstallationPackageId at path: C:/ProgramData/Package Cache/.unverified/DummyInstallationPackageId, moving to: C:/ProgramData/Package Cache/{F1D62AA5-E68C-4B99-A6DD-D7EAE5A1D238}v1.0.0.1/DummyInstaller.msi. [1A44:1E54][2014-02-24T17:47:16]i323: Registering package dependency provider: {F1D62AA5-E68C-4B99-A6DD-D7EAE5A1D238}, version: 1.0.0.1, package: DummyInstallationPackageId [1A44:1E54][2014-02-24T17:47:16]i301: Applying execute package: DummyInstallationPackageId, action: Install, path: C:/ProgramData/Package Cache/{F1D62AA5-E68C-4B99-A6DD-D7EAE5A1D238}v1.0.0.1/DummyInstaller.msi, arguments: '' ARPSYSTEMCOMPONENT="1" MSIFASTINSTALL="7"'' [2870:21C0][2014-02-24T17:47:22]i319: Applied execute package: DummyInstallationPackageId, result: 0x0, restart: None [1A44:1E54][2014-02-24T17:47:22]i325: Registering dependency: {57a07296-0310-4628-971c-2da38aa09f25} on package provider: {F1D62AA5-E68C-4B99-A6DD-D7EAE5A1D238}, package: DummyInstallationPackageId [1A44:1E54][2014-02-24T17:47:22]i301: Applying execute package: {f1d57671-5e3d-4be7-908f-5a47e72737d9}, action: Uninstall, path: C:/ProgramData/Package Cache/{f1d57671-5e3d-4be7-908f-5a47e72737d9}/BootstrapperSetup.exe, arguments: ''"C:/ProgramData/Package Cache/{f1d57671-5e3d-4be7-908f-5a47e72737d9}/BootstrapperSetup.exe" -uninstall -quiet -burn.related.upgrade'' [2870:21C0][2014-02-24T17:48:54]i319: Applied execute package: {f1d57671-5e3d-4be7-908f-5a47e72737d9}, result: 0x0, restart: None [2870:21C0][2014-02-24T17:48:54]i399: Apply complete, result: 0x0, restart: None, ba requested restart: No [2870:21C0][2014-02-24T17:48:55]i500: Shutting down, exit code: 0x0

Problema: en lugar de desinstalar silenciosamente, mostraría el cuadro de diálogo Desinstalar. Y si hago clic en Desinstalar, desinstalaría 1.0.0.0 y luego la aplicación se actualizaría a 1.0.0.1.

Pregunta: ¿Cómo hacer que comprenda sus argumentos de línea de comandos y hacer el proceso sin mostrar el cuadro de diálogo Desinstalar?

También consulté en el proyecto WixBA desde la fuente Wix 3.7, pero su manejo de línea de comandos solo está manejando el argumento InstallFolder.

Realmente agradecería cualquier ayuda, ya que este escenario de actualización bloquea mi proyecto Bootstrapper.

Gracias un montón.


Gracias por las pistas @John. Funcionó con la ayuda de tus consejos. Esto es lo que agregué en Ejecutar () antes de abrir Diálogos (La vista de formularios):

if (Command.Display != Display.Full && Command.Action == LaunchAction.Uninstall) { //MessageBox.Show("Let''s do Uninstall silentley "); MyViewModel.PlanAction(LaunchAction.Uninstall); }

Por cierto, en mi caso, Command.Display fue Display.Embeded, que es el comportamiento esperado.

Realmente aprecié tu sugerencia. Gracias de nuevo.