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

Jed*_*Jed 9 installer setup-project visual-studio-2010

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

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

在此输入图像描述

Has*_*ion 7

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

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

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

此对话框的属性包括:

  • BannerBitmap
  • BannerText
  • BodyText

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


Cos*_*rvu 6

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

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


Gon*_*oug 5

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

步骤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
Run Code Online (Sandbox Code Playgroud)

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

cscript.exe "$(ProjectDir)removebannertext.vbs" "$(BuiltOuputPath)"
Run Code Online (Sandbox Code Playgroud)