【问题标题】:WiX wxs script with option to install on Selecting current-user or all-users install带有安装选项的 WiX wxs 脚本选择当前用户或所有用户安装
【发布时间】:2009-05-06 14:21:38
【问题描述】:

我需要一个可以构建的完整 WiX 脚本。它有

  1. 欢迎
  2. 最终用户许可协议
  3. 安装文件夹
  4. 选择当前用户或所有用户安装
  5. 安装
  6. 完成

我只需要一个 wxs 文件,因为它用于一个简单的应用程序。我还需要一个选项来为当前用户或所有用户安装它。

【问题讨论】:

    标签: select wix


    【解决方案1】:

    您是否检查过 Wix3 中内置的 WixUI_Advanced UI?

    下面是它的对话框:

    • AdvancedWelcomeEulaDlg
    • BrowseDlg
    • DiskCostDlg
    • FeaturesDlg
    • InstallDirDlg
    • InstallScopeDlg(用于选择用户或每台机器)
    • InvalidDirDlg

    【讨论】:

    【解决方案2】:

    我也使用了 WixUI_InstallDir,但通过在安装程序末尾添加一些“下一步做什么”文本来复制并根据我的需要对其进行调整。我使用this detailed walkthrough 获取常用的 Wix GUI 并为我自己的目的更改了几个屏幕。这确实需要您获取 Wix 源代码,但只是为了获取 Wix 开发人员包含以驱动 WixUI_InstallDir 安装程序的实际 Product.wxs 文件的未编译版本。

    所以基本上我在解决方案中有这样的东西(使用 VS 的 Votive 插件):

    • MyWeb 项目
    • 蜡项目
      • MyWeb.wxs - 显然是我的产品资料
      • Product.wxs - 来自 Wix 源的 Wix 文件,用于定义 WixUI_InstallDir 的结构、流程和内容
      • My_InstallDir.wxs - 这就是有趣的地方。基本上复制了源代码 Wix 文件,对其进行了更改以满足我的需要,然后确保在 Product.wxs 中我引用了 my 屏幕,而不是原始屏幕。

    产品.wxs

        <UI>
            <UIRef Id="My_InstallDir"/>
        </UI>
    
        <!-- Add the customized EULA -->
        <WixVariable Id="WixUILicenseRtf" Value="$(var.SolutionDir)\doc\license.rtf" />
        <Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION" />
        <UIRef Id="My_InstallDir" />
        <!-- Add the customized banner logo -->
        <WixVariable Id="WixUIBannerBmp" Value="$(var.SolutionDir)\doc\InstallerBanner.bmp" />
        <WixVariable Id="WixUIDialogBmp" Value="$(var.SolutionDir)\doc\InstallerSidebar.bmp" />
    

    My_InstallDir.wxs 完全没有改变,除了引用我的退出对话框的那一行,这是我的“下一步做什么”注释所在的位置:

    <Publish Dialog="MyExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish>
    

    那么真正的变化是在我显示文本的 My_ExitDialog 中:

    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <UI>
            <Dialog Id="MyExitDialog" Width="370" Height="270" Title="!(loc.ExitDialog_Title) test">
                <Control Id="Finish" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Cancel="yes" Text="!(loc.WixUIFinish)" />
                <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Disabled="yes" Text="!(loc.WixUICancel)" />
                <Control Id="Bitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="234" TabSkip="no" Text="!(loc.ExitDialogBitmap)" />
                <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Disabled="yes" Text="!(loc.WixUIBack)" />
                <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
                <!--<Control Id="Description" Type="Text" X="135" Y="70" Width="220" Height="40" Transparent="yes" NoPrefix="yes" Text="!(loc.ExitDialogDescription)" />-->
                <Control Id="Title" Type="Text" X="135" Y="20" Width="220" Height="60" Transparent="yes" NoPrefix="yes" Text="!(loc.ExitDialogTitle)" />
                <Control Id="NextSteps" Type="ScrollableText" X="135" Y="70" Width="220" Height="140" Sunken="yes" TabSkip="no">
                    <Text SourceFile="$(var.SolutionDir)\doc\GemWebAfterInstall.rtf" />
                </Control>
            </Dialog>
    
            <InstallUISequence>
                <Show Dialog="MyExitDialog" OnExit="success" />
            </InstallUISequence>
    
            <AdminUISequence>
                <Show Dialog="MyExitDialog" OnExit="success" />
            </AdminUISequence>
        </UI>
    </Fragment>
    

    我知道您正在寻找解决方案,而不是指针。但是,使用我引用的文章作为关键起点,我认为您可以在现成的 WixUI 位中找到您需要的所有部分,或者通过替换小块“开箱即用”的东西就像我一样。祝你好运。

    【讨论】:

      猜你喜欢
      • 2017-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-21
      • 2023-03-11
      • 2017-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多