- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要用户能够为我的安装设置多个不同的目标目录。
我有这样的目录结构:
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="DCOMPANY" Name="MyCompany" >
<Directory Id="DMAIN" Name="MainDir">
<Directory Id="DPART1" Name="Part1"/>
<Directory Id="DPART2" Name="Part2"/>
</Directory>
</Directory>
</Directory>
</Directory>
我这里也有这些属性
<Property Id="WIXUI_INSTALLPATH" Hidden="yes" />
<Property Id="VARIABLE_PATH_DPART1" Value="DPART1" />
<Property Id="VARIABLE_PATH_DPART2" Value="DPART2" />
为了覆盖单个 InstallDirDialog,我复制了文件 WIXUI_InstallDir.wxs 和 InstallDirDlg.wxs。我复制了 InstallDirDlg.wxs 并将数字 1 和 2 添加到文件的末尾,为所有三个添加了前缀 custom_ 并相应地更改了它们的 UI-Tags:
现在,在 custom_WIXUI_InstallDir.wxs 中,我稍微更改了这个 block ,所以我希望我的属性由操作设置:
<Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="custom_InstallDirDlg1">LicenseAccepted = "1"</Publish>
<Publish Dialog="custom_InstallDirDlg1" Control="Back" Event="NewDialog"
Value="LicenseAgreementDlg">1</Publish>
<Publish Dialog="custom_InstallDirDlg1" Control="Next"
Event="SetTargetPath" Value="[VARIABLE_PATH_DPART1]" Order="1">1</Publish>
<Publish Dialog="custom_InstallDirDlg1" Control="Next" Event="DoAction"
Value="WixUIValidatePath" Order="2">NOT WIXUI_DONTVALIDATEPATH</Publish>
<Publish Dialog="custom_InstallDirDlg1" Control="Next" Event="SpawnDialog"
Value="InvalidDirDlg" Order="3"><![CDATA[NOT WIXUI_DONTVALIDATEPATH AND
WIXUI_INSTALLDIR_VALID<>"1"]]></Publish>
<Publish Dialog="custom_InstallDirDlg1" Control="Next" Event="DoAction"
Value="InvalidDirDlg" Order="3"><![CDATA[NOT WIXUI_DONTVALIDATEPATH AND
WIXUI_INSTALLDIR_VALID<>"1"]]></Publish>
<Publish Dialog="custom_InstallDirDlg1" Control="Next" Event="NewDialog"
Value="VerifyReadyDlg" Order="4">WIXUI_DONTVALIDATEPATH OR
WIXUI_INSTALLDIR_VALID="1"</Publish>
<Publish Dialog="custom_InstallDirDlg1" Control="ChangeFolder"
Property="_BrowseProperty" Value="[VARIABLE_PATH_DPART1]"
Order="1">1</Publish>
<Publish Dialog="custom_InstallDirDlg1" Control="ChangeFolder"
Event="SpawnDialog" Value="BrowseDlg" Order="2">1</Publish>
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog"
Value="custom_InstallDirDlg1" Order="1">NOT Installed</Publish>
在 custom_InstallDirDlg1.wxs 中,我还将这一行更改为我的路径变量:
<Control Id="Folder" Type="PathEdit" X="20" Y="100" Width="320"
Height="18" Property="VARIABLE_PATH_DPART1" Indirect="yes" />
当我现在编译时,一切都已创建,当我运行安装程序时,当我单击“更改...”按钮或“下一步...”按钮时,安装程序会卡住大约 30 秒,然后说“指定的路径 DPART1 不可用。”
当我查看在所有这些 CDATA block 中调用的自定义操作的来源时,我发现那些只关心 WIXUI_INSTALLPATH 并且不接受任何给它们的东西。所以它几乎是在使用间接寻址。
我还在某处读到可以重复使用此对话框让用户输入多个目标路径,但我不知道如何操作。
请帮忙:)
最佳答案
也许我会把它添加为答案,这样你就可以像你说的那样接受它 - 也许还可以投票。然后让赏金用完 - 我不认为它会起作用,因为你还没有声誉。
我现在没有时间详细阅读,但请看一下这个答案:WiX-installer With Configurable Feature Directory (朝中间,如果看起来相关,还有答案的其余部分)。这些是“功能目录”,可以链接到链接中描述的实际目录属性。
上面的示例使用了 WiX Mondo 对话框集。 I describe setting up a minimal WiX compile with the Mondo dialog set here .本质上是一个“Hello WiX”项目,但您已经有了它。只需添加它以防其他人发现它有帮助。
更新:我的简短测试似乎表明,对于大多数安装模式,系统会保留此类功能目录,但不会在主要升级时保留。要读取这些自定义文件夹的先前设置,您需要 AppSearch 或自定义操作,并且您应该让您的设置在注册表中保留目录属性。
这些只是快速测试的一些建议。请一如既往地彻底测试自己。 Windows Installer 中有很多我称之为“阴谋复杂性”的东西 - 问题出乎意料地出现 - 例如当您尝试交付升级时。
在安装期间将您的属性保留在注册表中(您的功能目录属性):
<!--Put this inside a component-->
<RegistryKey Root="HKLM" Key="Software\MyCompany\MyApp" ForceCreateOnInstall="yes">
<RegistryValue Type="string" Name="MYCUSTOMDIR" Value="[MYCUSTOMDIR]" KeyPath="yes"/>
</RegistryKey>
<!--Put this inside a component-->
<RegistryKey Root="HKLM" Key="Software\MyCompany\MyApp" ForceCreateOnInstall="yes">
<RegistryValue Type="string" Name="MYCUSTOMDIRTWO" Value="[MYCUSTOMDIRTWO]" KeyPath="yes"/>
</RegistryKey>
重要!:这将写入 HKLM\SOFTWARE\WOW6432Node\MyCompany\MyApp
- 64 位操作系统上注册表的 32 位部分。您可能需要写入和读取 64 位部分。如果是这样,只需将 Win64="yes"
属性添加到 Components 和 RegistrySearch 元素。
链接:http://robmensching.com/blog/posts/2010/5/2/the-wix-toolsets-remember-property-pattern/
接下来通过注册表搜索读回它们:
<Property Id="MYCUSTOMDIR">
<RegistrySearch Id='MYCUSTOMDIR' Root='HKLM' Key='Software\MyCompany\MyApp' Name='MYCUSTOMDIR' Type='raw' />
</Property>
<Property Id="MYCUSTOMDIRTWO">
<RegistrySearch Id='MYCUSTOMDIRTWO' Root='HKLM' Key='Software\MyCompany\MyApp' Name='MYCUSTOMDIRTWO' Type='raw' />
</Property>
在理想情况下,这应该足以满足您的目的。我没有时间测试在命令行中设置这些属性以进行升级时会发生什么(这可能会发生)。
要创建主要升级以进行测试,您基本上只需增加版本号的前三位数字之一并编译一个新的 MSI(重命名输出文件夹中的旧 MSI 以保留它) - 并生成一个新的产品 GUID(除非您将其设置为自动生成,在这种情况下,版本提升就足够了)。为了符合 MSI 标准,MSI 版本号应该只有 3 位数字。
关于user-interface - 多个目标目录的 WIX UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48578447/
情况我想使用 ui-date 在我的应用程序中设置/编辑日期。我使用最新稳定版本的 Angular、Angular-UI、JQuery-UI 等。 问题一旦使用日期选择器选择了日期,我的模型中的日期将
编辑: jQuery UI 可选择小部件内置了一个回调,stop,我需要知道如何以编程方式触发此事件。 (措辞不佳)我已将事件监听器附加到 jQuery UI Selectable Widget 。如
我正在尝试建立一个下一个JS与尾风用户界面提供的反应组件的网络应用程序。顺风用户界面是在幕后使用无头用户界面。。默认情况下,Next JS将构建服务器端组件,除非您在页面顶部添加“使用客户端”。不幸的
我正在尝试建立一个下一个JS与尾风用户界面提供的反应组件的网络应用程序。顺风用户界面是在幕后使用无头用户界面。。默认情况下,Next JS将构建服务器端组件,除非您在页面顶部添加“使用客户端”。不幸的
我正在尝试应用这个 SlickGrid 示例: http://mleibman.github.com/SlickGrid/examples/example4-model.html 到我自己的网络项目。
我想整理我的 Schemas为我的实体类生成,DTO 类位于 Springdoc ui . 我可以对 tags 进行排序和 operations通过以下配置 yml文件,但我的模式不是按排序顺序排列的
有谁知道阻止 ui-sref 重新加载状态的方法吗? 我无法通过“$stateChangeStart”事件执行此操作,因为 ui-sref 仅更改参数而不更改状态名称。 我的左边是书单,左边是书的详细
我正在 jquery ui 对话框中使用 jquery ui 自动完成小部件。当我输入搜索文本时,文本框缩进(ui-autocomplet-loading)但不显示任何建议。 var availabl
我正在尝试将 Kendo UI MVVM 框架与 Kendo UI 拖放机制结合使用;但我很难找到如何将数据从 draggable 对象中删除。 我的代码是这样的...... var viewMode
Kendo UI Web 和 Kendo UI Core 之间有什么区别 https://www.nuget.org/packages/KendoUIWeb http://www.nuget.org/
我正在尝试将 Kendo UI MVVM 框架与 Kendo UI 拖放机制结合使用;但是我很难找到如何从 draggable 对象中删除数据。 我的代码是这样的…… var viewModel =
使用 Angular JS - UI 路由器,我需要从我的父 View project.details 到我的 subview project.details.tasks 进行通信。我的 subvie
KendoUI 版本 2013.3.1119使用 Kendo MVVM 我有一个我构建的颜色选择器,它使用平面颜色选择器和使用调色板的颜色选择器。它们都可以正常运行,但平面颜色选择器的布局已关闭, s
我在非 UI 线程上,我需要创建并显示一个 SaveDialog。但是当我尝试显示它时:.ShowDialog() 我得到: "An unhandled exception of type 'Syst
我正在试验 jquery-ui 并查看和克隆一些示例。在一个示例(自动完成的组合框)中,我看到一个带有 ui-widget 类的 anchor (a) 元素,它与包含的 css 文件中的 .ui-wi
我需要返回一个 UI 列表,我用这个方法: getList(): Observable { return this.httpClient.get("/api/listui").pipe
我有 ui-grids在 angular-ui-tabs ,它们位于 ng-if 中以避免呈现问题。如果有更多数据并且网格进入滚动模式,则单击选项卡时数据会完全消失。我相信这是一个 ui-grids-
这似乎是一个通用的问题,与其他几个 React 开源框架相比,我真的很喜欢 Material ui 的可扩展性。 问题 “@material-ui/core”和“@material-ui/lab”中的
我有一个根页面(index.html),带有侧边栏(“菜单”)和主要内容 div(“主”),因此有两个 ui-view div - 一个称为“菜单”,一个称为“主”。 当主要内容区域有网站列表 (/s
有人在http://jsfiddle.net/hKYWr/上整理了一个很好的 fiddle 。关于使用 angular-ui 和 jqueryui sortable 来获得良好的可排序效果。 如何在两
我是一名优秀的程序员,十分优秀!