繁体   English   中英

如何从Visual Studio Installer项目中删除“欢迎使用安装向导”文本

[英]How to remove “Welcome to the Setup Wizard” text from Visual Studio Installer project

我有一个Visual Studio安装程序项目,我在Visual Studio 2010中,我无法弄清楚如何从向导的对话框中删除“欢迎使用[产品名称]安装向导”文本。

例如:如何从下面的屏幕截图中删除文本“欢迎使用Setup1安装向导”?

在此输入图像描述

您可以通过删除“欢迎”对话框并将其替换为自定义对话框来“删除”文本。 在VS 2005中 -

  1. 右键单击解决方案资源管理器中的安装项目
  2. 选择查看 - 用户界面
  3. 在“安装和管理安装的启动”组下,删除“欢迎”

然后,您可以向项目添加“文本框(A)”对话框(右键单击“开始”组并选择“添加对话框”),将文本框的visible属性设置为false。 将文本框(A)移动到“开始”序列的顶部。

此对话框的属性包括:

  • BannerBitmap
  • BannerText
  • BodyText

这应该允许您控制这个新的“欢迎”页面的外观(在一定程度上)。

Visual Studio安装项目不支持此功能。

解决方案是使用Orca编辑MSI以修改控件文本,但是每次构建后都必须这样做。 因此,您可以保留这种方式,也可以使用其他设置创作工具来自定义安装对话框。

我通过修改我在网上找到的各种其他结果拼凑而成的方法来实现这一目标。

步骤1:在安装项目的根文件夹中将以下内容另存为removebannertext.vbs

Option Explicit
If (Wscript.Arguments.Count < 1) Then
  Wscript.Echo "Windows Installer utility to execute SQL queries against an installer database." & vbCRLf & " The 1st argument specifies the path to the MSI database, relative or full path"
  Wscript.Quit 1
End If
Dim openMode : openMode = 1 'msiOpenDatabaseModeTransact
On Error Resume Next
Dim installer : Set installer = Wscript.CreateObject("WindowsInstaller.Installer") : CheckError
' Open database
Dim database : Set database = installer.OpenDatabase(Wscript.Arguments(0), openMode) : CheckError
Wscript.Echo "Removing all BannerText..."
Dim query
query = "UPDATE `Control` SET `Control`.`Attributes`=0 WHERE `Control`.`Control`='BannerText'"
Dim view : Set view = database.OpenView(query) : CheckError
view.Execute : CheckError
database.Commit
Wscript.Echo "Done."
Wscript.Quit 0
Sub CheckError
Dim message, errRec
If Err = 0 Then Exit Sub
message = Err.Source & " " & Hex(Err) & ": " & Err.Description
If Not installer Is Nothing Then
  Set errRec = installer.LastErrorRecord
  If Not errRec Is Nothing Then message = message & vbCRLf & errRec.FormatText
End If
Wscript.Echo message
Wscript.Quit 2
End Sub

第2步:将项目的PostBuildEvent属性设置为:

cscript.exe "$(ProjectDir)removebannertext.vbs" "$(BuiltOuputPath)"

Goner Doug答案很好。

但是ProgressBar BannerText还没有删除。我想在Goner Doug建议的BannnerText控件中删除属性值,如果我们可以清空BannerText字符串那么它可能是好的。 我们也可以通过执行相同的操作来删除ProgressBar窗口的Banner文本。 请注意,删除属性值不适用于ProgressBar bannner文本。

在Goner Doug的回答中,将query替换为

query = "UPDATE `Control` SET `Control`.`Text`='' WHERE `Control`.`Control`='InstalledBannerText' OR `Control`.`Control`='BannerText' OR `Control`.`Control`='RemoveBannerText'"

这也将删除进度栏窗口中的横幅文本。

Option Explicit
If (Wscript.Arguments.Count < 1) Then
Wscript.Echo "Windows Installer utility to execute SQL queries against an installer database." & vbCRLf & " The 1st argument specifies the path to the MSI database, relative or full path"
Wscript.Quit 1
End If
Dim openMode : openMode = 1 'msiOpenDatabaseModeTransact
On Error Resume Next
Dim installer : Set installer = Wscript.CreateObject("WindowsInstaller.Installer") : CheckError
' Open database
Dim database : Set database = installer.OpenDatabase(Wscript.Arguments(0), openMode) : CheckError
Wscript.Echo "Removing all BannerText..."
Dim query
query = "UPDATE `Control` SET `Control`.`Text`='' WHERE `Control`.`Control`='InstalledBannerText' OR `Control`.`Control`='BannerText' OR `Control`.`Control`='RemoveBannerText'"
Dim view : Set view = database.OpenView(query) : CheckError
view.Execute : CheckError
database.Commit
Wscript.Echo "Done."
Wscript.Quit 0
Sub CheckError
Dim message, errRec
If Err = 0 Then Exit Sub
message = Err.Source & " " & Hex(Err) & ": " & Err.Description
If Not installer Is Nothing Then
Set errRec = installer.LastErrorRecord
If Not errRec Is Nothing Then message = message & vbCRLf & errRec.FormatText
End If
Wscript.Echo message
Wscript.Quit 2
End Sub

您可以通过修改记事本中的项目文件轻松更改欢迎文本。 (即project1.vdproj)确保更改ProductName或Title。 我不记得究竟是哪一个,然后重建项目,你就完成了。

一种解决方案(如果您的设置创建过程不冗长) - 您必须从头开始进行设置,并在提示输入设置名称时将其重命名为My Setup。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM