WIX安装程序:使用自定义操作将附加文本设置为退出对话框

WIX安装程序:使用自定义操作将附加文本设置为退出对话框,wix,Wix,我正在使用wix安装ASP.NET MVC网站。我需要在退出屏幕上显示已安装站点的URL 我有以下财产: <Property Id="WEBSITE_URL" Value="NotSet" /> <Property Id="WIXUI_EXITDIALOGOPTIONALTEXT" Value="NotSet" /> 使用自定义操作填充的对象: <CustomAction Id="GetWebsiteUrl" BinaryKey="

我正在使用wix安装ASP.NET MVC网站。我需要在退出屏幕上显示已安装站点的URL

我有以下财产:

<Property Id="WEBSITE_URL" Value="NotSet" />
<Property Id="WIXUI_EXITDIALOGOPTIONALTEXT" Value="NotSet" />

使用自定义操作填充的对象:

<CustomAction Id="GetWebsiteUrl"
              BinaryKey="CustomActions"
              DllEntry="GetWebsiteUrl"
              Execute="immediate"
              Return="ignore" />

<CustomAction Id="SetExitDialogAdditionalText"
              Property="WIXUI_EXITDIALOGOPTIONALTEXT" 
              Value="The API may be accessed from the following URL: [WEBSITE_URL]"/>

InstallUISequence如下所示:

<InstallUISequence>
      <Custom Action='GetWebsiteUrl' Before='ExecuteAction'>NOT Installed AND NOT REMOVE</Custom>
      <Custom Action="SetExitDialogAdditionalText" After="GetWebsiteUrl">NOT Installed AND NOT REMOVE</Custom>
</InstallUISequence>

未安装也未删除
未安装也未删除
退出屏幕上的结果字符串为:

可以从以下URL访问API:NotSet

我已尝试在InstallExecuteSequence和日志中执行自定义操作,我可以看到字符串看起来是正确的:

<InstallExecuteSequence>
      <Custom Action='GetWebsiteUrl' Before='InstallFinalize'>NOT Installed AND NOT REMOVE</Custom>
      <Custom Action="SetExitDialogAdditionalText" After="GetWebsiteUrl">NOT Installed AND NOT REMOVE</Custom>
</InstallExecuteSequence>

未安装也未删除
未安装也未删除
结果显示在日志中:

属性更改:修改网站的URL属性。其当前值为 “未设置”。它的新值:“”

属性更改:修改WIXUI\u EXITDIALOGOPTIONALTEXT属性。它的 当前值为“未设置”。它的新价值是:“API可能是 从以下URL访问:'

但在UI中,出现了一些问题。
我觉得问题在安装过程中,但不明白我做错了什么。请告知。

请尝试将您的网站URL属性声明为安全的,以防在UI和执行序列中未正确保存该值

尝试将您的网站\u URL属性声明为安全的,以防在UI和执行序列中未正确保存该值

我已经尝试使用以下命令运行msi,以通过UI查看安装日志:msiexec/I API.Installer.msi/l*v MyLogFile.txt,它刚刚起作用!在此之后,我尝试将Admin=“yes”添加到属性中,但当我不是从控制台运行msi时仍然没有成功。我尝试使用以下命令运行msi,以通过UI查看安装日志:msiexec/I API.Installer.msi/l*v MyLogFile.txt,它刚刚起作用!之后,我尝试将Admin=“yes”添加到属性中,但当我不是从控制台运行msi时仍然没有成功。在下面的评论中,您提到它可以从命令行调用。我可以向您保证,除了添加日志之外,没有“功能”上的差异。如果添加“logging”是“允许”set属性工作,我可能会怀疑DLL有计时/线程问题。为什么需要自定义操作来获取网站URL?这不应该是安装“信息”的一部分吗?在安装过程中,用户可以在iis中选择要安装应用程序的网站。应用程序部署到IIS,然后使用自定义操作从选定的webiste获取绑定信息并组装最终url。您只需在InstallValidate sequence操作之前收集并设置属性。您不需要为此执行自定义操作。一个带有属性链接的简单对话框文本应该就可以做到这一点。您可能仍然需要自定义操作来根据URL收集其他信息,但这将与向导工作流一起调用。完整的UI,对吗?在下面的评论中,您提到它可以从命令行调用。我可以向您保证,除了添加日志之外,没有“功能”上的差异。如果添加“logging”是“允许”set属性工作,我可能会怀疑DLL有计时/线程问题。为什么需要自定义操作来获取网站URL?这不应该是安装“信息”的一部分吗?在安装过程中,用户可以在iis中选择要安装应用程序的网站。应用程序部署到IIS,然后使用自定义操作从选定的webiste获取绑定信息并组装最终url。您只需在InstallValidate sequence操作之前收集并设置属性。您不需要为此执行自定义操作。一个带有属性链接的简单对话框文本应该就可以做到这一点。您可能仍然需要自定义操作来根据URL收集其他信息,但这将与向导工作流一起调用。完整用户界面,对吗?