gpt4 book ai didi

WiX:当封装在 Burn/EXE 中时,如何显示 MSI 的对话框?

转载 作者:行者123 更新时间:2023-12-04 12:48:13 25 4
gpt4 key购买 nike

我有一个带有对话框的 MSI,提示用户 [1] 浏览到安装目录,[2] 接受 EULA,[3] 安装完成后启动应用程序。

我将 MSI 包装在 Burn Bundle 中以制作 EXE。现在我看到的只是 EXE 的 EULA 提示,但没有提示选择安装目录或启动应用程序。

我想用EXE格式,因为客户看懂了,我可以关联我的图标,在EXE中嵌入我的版本号,然后提示输入管理员密码。客户将我的软件作为单个可执行文件下载。

这是代码:

<WixVariable Id="WixStdbaLogo" Value="MyIcon.ico" />
<Variable Name="InstallFolder" Type="string" Value="[ProgramFilesFolder]MyCompany\MyProduct"/>
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<WixVariable Id="WixStdbaLicenseRtf" Value="MyLicense.rtf" />

<Chain>
<MsiPackage
Id="Setup"
Compressed="yes"
SourceFile="MyProduct.msi"
Vital="yes"
DisplayInternalUI="yes"
EnableFeatureSelection="yes"
>
<MsiProperty Name="INSTALLLOCATION" Value="[InstallFolder]" />
</MsiPackage>
</Chain>

"DisplayInternalUI="是 "选项似乎没有做我想要的。 "EnableFeatureSelection" 无论是是还是否都没有区别。

如何显示 MSI 对话框?或者,如何让刻录生成的 EXE 提示安装目录和应用程序启动?

我使用的是 WiX 3.7.1224,VS 2010。

我查看了以下来源:
  • WiX.chm
  • WiX 教程 ( http://wix.tramontana.co.hu/tutorial )
  • SourceForge ( http://wix.sourceforge.net/index.html )
  • 安装的乐趣 ( http://www.joyofsetup.com/ )
  • WiX 工具集,外曲线 (http://wixtoolset.org/)
  • WiX 用户论坛 ( http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/ )
  • 头晕猴 ( http://www.dizzymonkeydesign.com/blog/misc/adding-and-customizing-dlgs-in-wix-3/ )

  • 这是 MSI(于 AST 6 月 30 日 13:07 添加):
    <Product Id="*" Name="My Product" Language="1033" Version="5.0.0" 
    Manufacturer="My Company" UpgradeCode="0bd6d4cf-d23d-431a-9baf-c72cb0525f0c">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

    <MajorUpgrade DowngradeErrorMessage="A newer version of My Program is already installed." />
    <MediaTemplate EmbedCab="yes" CompressionLevel="high"/>

    <Feature Id="ProductFeature" Title="My Product" Level="1">
    <ComponentGroupRef Id="ProductComponents" />
    </Feature>

    <!-- Set Installer's Icon in Add/Remove Programs -->
    <Icon Id="icon.ico" SourceFile="MyProduct.ico"/>
    <Property Id="ARPPRODUCTICON" Value="icon.ico" />

    <Property Id="ProductSeed"> 3022 </Property>
    <Binary Id="PlantSeedDLL" SourceFile="..\..\PlantSeed\Release\PlantSeed.DLL" />
    <CustomAction Id="DLLPlantSeed" BinaryKey="PlantSeedDLL" DllEntry="PlantSeedFunc"
    Execute="immediate" Return="check" HideTarget="no" Impersonate="yes"/>

    <!-- Step 1: Define the directory structure -->
    <Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="ProgramFilesFolder">
    <Directory Id="INSTALLFOLDER" Name="My Product"/>
    </Directory>
    <!-- Shortcut on Start Menu -->
    <Directory Id="ProgramMenuFolder">
    <Directory Id="ApplicationProgramsFolder" Name="My Product"/>
    </Directory>
    <!-- Desktop shortcut -->
    <Directory Id="DesktopFolder" Name="Desktop">
    </Directory>
    </Directory>

    <CustomAction Id="Install_PDF_printer" FileKey="Install.exe"
    ExeCommand='Install.exe -s "My PDF Printer" -n "My Company Inc." -c "****************"'
    Execute="deferred" Return="check" HideTarget="no" Impersonate="no" />

    <!-- Banner images -->
    <!-- <WixVariable Id="MainLogoBmp" Value="Resources/Images/weblabel.jpg" /> -->
    <WixVariable Id="WixUIBannerBmp" Value="MyProduct iconWiXbanner.jpg" /> <!-- 493 × 58 -->
    <WixVariable Id="WixUIDialogBmp" Value="MyProduct 616x390.jpg" /> <!-- 616 × 390 -->

    <!-- License (not necessary to have it as a component) -->
    <WixVariable Id="WixUILicenseRtf" Value="MyProduct License.rtf" />

    <!-- Prompt for install directory -->
    <Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" />
    <UIRef Id="WixUI_InstallDir" />

    <!-- Display checkbox Prompt to run EXE at end -->
    <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOX" Value="1"/> <!-- Default to checked -->
    <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch My Product" />
    <Property Id="WixShellExecTarget" Value="[#MyProduct.exe]" />
    <CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />

    <!-- Prompt to run EXE at end -->
    <UI>
    <UIRef Id="WixUI_FeatureTree"/> <!-- causes compilation errors -->
    <Publish Dialog="ExitDialog"
    Control="Finish"
    Event="DoAction"
    Value="LaunchApplication">
    WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed
    </Publish>
    </UI>

    <UI> <!-- For the dialogs -->
    <TextStyle Id="Font10" FaceName="Tahoma" Size="10" Red="0" Green="0" Blue="0" />
    <TextStyle Id="Font12" FaceName="Tahoma" Size="12" Red="0" Green="0" Blue="0" />
    </UI>

    <!-- Include dialogs -->
    <Property Id="ApplicationFolderName" Value="MyProduct Folder" /> <!-- WixUI_Advanced -->
    <Property Id="WixAppFolder" Value="WixPerMachineFolder" /> <!-- WixUI_Advanced -->
    <!-- Install for all users -->
    <WixVariable Id="WixUISupportPerUser" Value="0" /> <!-- WixUI_Advanced -->

    <!-- Write product key in Registry -->
    <DirectoryRef Id="TARGETDIR">
    <Component Id="RegistryEntries" Guid="*">
    <!-- HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\My Company Inc.\My Product -->
    <RegistryKey Root="HKLM"
    Key="Software\My Company Inc.\My Product" >
    <RegistryValue Type="string" Name="TARGET" Value="[INSTALLFOLDER]"/>
    </RegistryKey>
    </Component>
    </DirectoryRef>

    <!-- Shortcut on Start Menu -->
    <DirectoryRef Id="ApplicationProgramsFolder">
    <Component Id="ApplicationShortcut" Guid="*">
    <Shortcut Id="ApplicationStartMenuShortcut"
    Name="My Product"
    Description="My Product"
    Target="[INSTALLFOLDER]MyProduct.exe"
    WorkingDirectory="INSTALLFOLDER"
    />
    <RemoveFolder Id="ApplicationProgramsFolder" On="uninstall"/>
    <RegistryValue Root="HKCU" Key="Software\Microsoft\My Product" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
    </Component>
    </DirectoryRef>

    <!-- Step 2: Add files to your installer package -->
    <DirectoryRef Id="INSTALLFOLDER">

    <Component Id="MyProduct.exe" Guid="*">
    <File Id="MyProduct.exe" Name="MyProduct.exe"
    Source="..\\..\\Release\\MyProduct.exe"
    KeyPath="yes" Checksum="yes">

    <!-- Desktop shortcut -->
    <Shortcut Advertise="yes"
    Id="MyProductDesktopShortcut"
    Directory="DesktopFolder"
    Name="My Product"
    WorkingDirectory="INSTALLFOLDER"
    Description="My Product"
    Icon="MyProduct.ico">
    <Icon Id="MyProduct.ico" SourceFile="MyProduct.ico" />
    </Shortcut>
    </File>
    </Component>

    <Component Id="MyProduct.chm" Guid="*">
    <File Id="MyProduct.chm" Source="MyProduct.chm" KeyPath="yes" Checksum="yes"/>
    </Component>
    <Component Id="MyProduct.bmp" Guid="*">
    <File Id="MyProduct.bmp" Source="MyProduct.bmp" KeyPath="yes" Checksum="yes"/>
    </Component>
    <Component Id="MyProduct.ico" Guid="*">
    <File Id="MyProduct.ico" Source="MyProduct.ico" KeyPath="yes" Checksum="yes"/>
    </Component>

    <!-- Many, many more components... -->
    </DirectoryRef>

    <!-- Step 3: Tell WiX to install the files -->
    <Feature Id="MainApplication" Title="Main Application" Level="1">
    <ComponentRef Id="MyProduct.exe" />
    <ComponentRef Id="MyProduct.bmp" />
    <ComponentRef Id="MyProduct.ico" />
    <ComponentRef Id="MyProduct.chm" />

    <ComponentRef Id="ApplicationShortcut" />

    <ComponentRef Id="RegistryEntries" /> <!-- Registry entry -->
    </Feature>

    <InstallExecuteSequence>
    <!-- Before="InstallFinalize" -->
    <Custom Action="Install_PDF_printer" After="InstallFiles" />
    </InstallExecuteSequence>

    <!-- Calculate Trial Expiry date, write to Registry -->
    <InstallExecuteSequence>
    <Custom Action="DLLPlantSeed" After="InstallFiles" />
    </InstallExecuteSequence>
    </Product>

    <Fragment>
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
    <!-- TODO: Remove the comments around this Component element
    and the ComponentRef below in order to add resources to this installer. -->
    <!-- <Component Id="ProductComponent"> -->
    <!-- TODO: Insert files, registry keys, and other resources here. -->
    <!-- </Component> -->
    </ComponentGroup>
    </Fragment>

    最佳答案

    反之亦然:尝试 supress WIX ExitDlgMSI并留下您的 BA对话。

    关于WiX:当封装在 Burn/EXE 中时,如何显示 MSI 的对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17374234/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com