stores pago page metodos formularios dudas como ayuda administrar c# wix wix3.5

c# - pago - wix dudas



Wix 3.5, Instalar características basadas en casillas de verificación (3)

Encontré lo que solucionó mi problema. Para hacer lo que tenía previsto, necesitaba crear una casilla de verificación para cada función individual.

<Control Id="FeatureX" Type="CheckBox" X="191" Y="50" Width="140" Height="17" Property="FEATUREX_CHECKED" CheckBoxValue="myValue" Text="Install feature 1" /> <Control Id="FeatureY" Type="CheckBox" X="191" Y="67" Width="140" Height="17" Property="FEATUREY_CHECKED" CheckBoxValue="myValue" Text="Install feature 1" /> <Control Id="FeatureZ" Type="CheckBox" X="191" Y="84" Width="140" Height="17" Property="FEATUREZ_CHECKED" CheckBoxValue="myValue" Text="Install feature 1" />

Ahora, una vez que hice eso, agregué una publicación correspondiente a cada uno, y realicé una condición que lo hizo de modo que solo si se selecciona la casilla de verificación se instalará esa característica. Al igual que:

<Control Id="Next" Type="PushButton" Text="Next" X="254" Y="243" Height="17" Width="56"> <Publish Event="Remove" Value="ALL" Order="1">1</Publish> <Publish Event="AddLocal" Value="FeatureX" Order="2"> <![CDATA[FEATUREX_CHECKED]]> </Publish> </Control>

NOTA:

Eliminar se usa para anular la selección de todo lo que se instala (se me informó que una vez que se invoca la UI, es demasiado tarde para cambiar los niveles de las funciones).

Luego, se verifica cada función para ver si se ha seleccionado la "casilla de verificación correspondiente" y, de ser así, se agrega a la propiedad "Agregar local". AddLocal se vería así si uno lo mirara:

ADDLOCAL=FeatureX,FeatureY,FeatureZ...

Lo último que tenía que hacer para que esto funcionara era verificar en mis main.wxs para asegurarme de que el FeatureID utilizado en las casillas de verificación coincidía con el ComponentGroupRefID utilizado:

<ComponentGroupRef Id="FeatureX"/>

Así que ahí está ... Una vez más agradezco a todos por su ayuda con esto. Si alguien que lee esto está confundido por algo, siéntete libre de escribirme un mensaje y haré todo lo posible para explicar las cosas un poco más.

Estoy tratando de hacerlo para que cuando el usuario seleccione algo mediante la casilla de verificación, se instale una función correspondiente. Conozco el árbol de características precompiladas que proporciona Wix, pero hay otras cosas que estoy haciendo que no me permiten usar esta función. Tengo curiosidad sobre cómo vincular los dos para que cuando el usuario selecciona la casilla de verificación "Instalar Feature X", la característica X se instala cuando el usuario hace clic en el botón de instalación ... cualquier consejo sería muy apreciado.


Este es mi código de muestra para instalar funciones

Product.wxs

<Product Id="{C9FD5DDE-2625-4E01-B415-8A734464F341}" Name="!(wix.Product)" Language="1033" Version="1.0.0.0" Manufacturer="!(wix.Manufacturer)" UpgradeCode="!(wix.UpgradeCode)"> <Package InstallerVersion="200" Compressed="yes" Languages="1033" Manufacturer="!(wix.Manufacturer)" Description="!(wix.ProductDesc)"/> <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" /> <WixVariable Id="UpgradeCode" Value="{E5695E2A-EE5F-4EEE-A326-98A9F8B2EF0A}"/> <WixVariable Id="Manufacturer" Value="BSDreams"/> <WixVariable Id="Product" Value="WixSubFeatures"/> <WixVariable Id="ProductDesc" Value="Minimal select one feature install"/> <WixVariable Id="ProductIcon" Value="chk_on.ico"/> <WixVariable Id="WixSubFiles" Value="./Files"/> <Property Id="ARPNOMODIFY" Value="0" /> <Property Id="ARPPRODUCTICON" Value="!(wix.ProductIcon)" /> <Property Id="INSTALLDIR"> <RegistrySearch Id="WixSubFeaturesSearch" Type="raw" Root="HKCU" Key="!(wix.Manufacturer)/!(wix.Product)" Name="InstallDir" /> </Property> <Icon Id="chk_on.ico" SourceFile="!(wix.WixSubFiles)/!(wix.ProductIcon)"/> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ManufacturerDir" Name="!(wix.Manufacturer)"> <Directory Id="INSTALLDIR" Name="!(wix.Product)"> <Component Id="ProductMain" Guid="{FF35C142-480A-4d67-A2ED-E5C9E508F809}"> <CreateFolder /> <RegistryKey Id="WixSubDirReg" Root="HKCU" Key="!(wix.Manufacturer)/!(wix.Product)" Action="createAndRemoveOnUninstall"> <RegistryValue Type="string" Value="[INSTALLDIR]" Action="write"/> </RegistryKey> </Component> </Directory> </Directory> </Directory> <UIRef Id="UserInterface"/> <Feature Id="PRODUCTFEATURE" Title="!(wix.Product)" Level="1" > <ComponentRef Id="ProductMain"/> <ComponentRef Id="IconFile"/> <Feature Id="OPTIONA" Title="Option A" Level="1" > <ComponentRef Id="TestFileA"/> </Feature> <Feature Id="OPTIONB" Title="Option B" Level="3" > <ComponentRef Id="TestFileB"/> </Feature> <Feature Id="OPTIONC" Title="Option C" Level="3" > <ComponentRef Id="TestFileC"/> </Feature> </Feature> <DirectoryRef Id="INSTALLDIR"> <Component Id="IconFile" Guid="{967A5110-B0F8-47b0-967B-CC4624D06EA5}"> <File Id="IconFileA" Source="!(wix.WixSubFiles)/!(wix.ProductIcon)" Name="chk_on.ico" Vital="yes" /> </Component> <Component Id="TestFileA" Guid="{F5ACE3D7-03DE-47a7-9CE8-50CEF5E9A7BF}"> <File Id="SomeFileA" Source="!(wix.WixSubFiles)/SomeFileA.txt" Name="BSDA.txt" Vital="yes"/> </Component> <Component Id="TestFileB" Guid="{CB5D53FB-8CED-42ef-89FF-08C7709CFCA5}"> <File Id="SomeFileB" Source="!(wix.WixSubFiles)/SomeFileB.txt" Name="BSDB.txt" Vital="yes" /> </Component> <Component Id="TestFileC" Guid="{987EA193-A1E0-41d2-8E9D-87D30D8F03AD}"> <File Id="SomeFileC" Source="!(wix.WixSubFiles)/SomeFileC.txt" Name="BSDC.txt" Vital="yes" /> </Component> </DirectoryRef> <CustomAction Id="SetARPINSTALLLOCATION" Property="ARPINSTALLLOCATION" Value="[INSTALLDIR]" /> <InstallExecuteSequence> <Custom Action="SetARPINSTALLLOCATION" After="InstallValidate"></Custom> </InstallExecuteSequence> </Product>

UserInterface.wxs

<Fragment Id="WixSubUI"> <UI Id="UserInterface"> <Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR" /> <Property Id="WixUI_Mode" Value="Custom" /> <TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" /> <TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="9" Bold="yes" /> <TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" /> <Property Id="DefaultUIFont" Value="WixUI_Font_Normal" /> <DialogRef Id="ProgressDlg" /> <DialogRef Id="ErrorDlg" /> <DialogRef Id="FilesInUse" /> <DialogRef Id="FatalError" /> <DialogRef Id="UserExit" /> <DialogRef Id="InstallDirDlg"/> <DialogRef Id="FeaturesDlg" /> <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="FeaturesDlg" Order="2"></Publish> <Publish Dialog="FeaturesDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">1</Publish> <Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="FeaturesDlg">1</Publish> <Publish Dialog="InstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish> <Publish Dialog="InstallDirDlg" Control="ChangeFolder" Event="SpawnDialog" Value="BrowseDlg" Order="2">1</Publish> <Publish Dialog="InstallDirDlg" Control="Next" Event="SetTargetPath" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish> <Publish Dialog="InstallDirDlg" Control="Next" Event="NewDialog" Value="ExitDialog" Order="2">1</Publish> <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish> </UI> <UIRef Id="WixUI_Common" />

Esto le proporcionará un instalador básico que instala la base en la interfaz de usuario seleccionada de la casilla de verificación de funciones.


El consejo para las casillas de verificación es inquietantemente similar al de los botones de opción . Use AddLocal y Quite eventos de control en el botón Siguiente o Instalar, cada una de las cuales condiciona la propiedad vinculada a sus casillas de verificación. Es demasiado tarde para usar los niveles de instalación de características para cuando muestre la interfaz de usuario al usuario.