custom-action - 在自定义操作之前安装组件
问题描述
我的安装应用程序应该在 sql server 中创建用户并恢复数据库。我将其作为两个独立的项目进行;一个将数据库备份文件复制到机器上,另一个用于执行操作。我打算把它做成一个单独的项目。
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFiles64Folder" Name="Program Files" >
<Directory Id="INSTALLFOLDER" Name="My Produact name" >
<Directory Id="DBDIR" Name="DB PreReq" ></Directory>
</Directory>
</Directory>
</Directory>
<UI Id="DbConfigSetupUI" >
<TextStyle Id="DlgFont8" FaceName="Tahoma" Size="8" ></TextStyle>
<TextStyle Id="DlgTitleFont" FaceName="Tahoma" Size="8" Bold="yes" ></TextStyle>
<UIRef Id="Custom_WixUI_Mondo" />
<UIRef Id="WixUI_ErrorProgressText" />
<InstallUISequence >
<Custom Action="CreateUserWithSa" Before="FileCost" >NOT Installed</Custom>
<Custom Action="CreateUserWithWindows" After="CreateUserWithSa" >(SARETURN="fail") AND NOT Installed</Custom>
<Show Dialog="ConnectionStringDialog" After="CreateUserWithWindows" >(WINDOWSRETURN="fail") AND NOT Installed</Show>
<Custom Action="CreateUserWithPrompt" After="ConnectionStringDialog" >(DBLOGIN AND PASSWORD) AND NOT Installed</Custom>
<Custom Action="CreateDB" After="CreateUserWithPrompt" >(SARETURN="pass" OR WINDOWSRETURN="pass" OR PROMPTRETURN="pass") AND NOT Installed</Custom>
</InstallUISequence>
</UI>
</Fragment>
这里没有复制文件(组件放置在单独的文件中),但正在执行自定义操作。由于备份文件是需要恢复的。我需要先发生这种情况。有没有办法做到这一点?
解决方案
安排您的自定义操作在 InstallExecuteSequence 中的 InstallFinalize 之后运行。您可以保证到那时您的文件将被安装。请注意,如果您的操作需要访问它们,您将需要存储您的属性/数据值。
推荐阅读
- html - xhtml 页面在 iframe 上无法正常工作
- awk - awk 匹配模式并将数字转换为不同的单位
- python - 如何在 json dict 中循环并使用 Python 选择特定索引
- sass - 您可以使用 SCSS 模块定位/修改现有类吗?
- sql-server - SQL Server:在存储过程中创建临时表
- php - 如何在 laravel 5.2 上解析失败的作业负载?
- c++ - 将 opencv Mat 传递给函数时,引用非常量的初始值必须是左值
- c++ - 在 C++ 中只有头文件(模板类/函数)的情况下如何使用 Bazel?
- mysql - 如何在 MySQL Workbench 中将大型查询结果的导出拆分为多个 CSV
- angular-material - 使用 Angular 在表格中添加新行