我在Visual Studio 2010中创建了一个Visual Studio安装程序项目,但无法弄清楚如何从向导的对话框中删除“欢迎使用[产品名称]安装向导”文本。
例如:如何从下面的屏幕截图中删除“欢迎使用Setup1安装向导”文本?
答案 0 :(得分:7)
您可以通过删除“欢迎”对话框并将其替换为自定义对话框来“删除”文本。在VS 2005中 -
然后,您可以在项目中添加“文本框(A)”对话框(右键单击“开始”组并选择“添加对话框”),将文本框的visible属性设置为false。将文本框(A)移动到“开始”序列的顶部。
此对话框的属性包括:
BannerBitmap
BannerText
BodyText
这应该允许您控制这个新的“欢迎”页面的外观(在一定程度上)。
答案 1 :(得分:6)
Visual Studio安装项目不支持此功能。
解决方案是使用Orca编辑MSI以修改控件文本,但每次构建后都必须这样做。因此,您可以保留这种方式,也可以使用其他设置创作工具来自定义安装对话框。
答案 2 :(得分: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
步骤2:将项目的PostBuildEvent属性设置为:
cscript.exe "$(ProjectDir)removebannertext.vbs" "$(BuiltOuputPath)"
答案 3 :(得分:3)
Goner Doug答案很有效。
但ProgressBar
BannerText
尚未删除。我猜测而不是删除Goner Doug建议的BannnerText
控件中的属性值,如果我们可以清空BannerText
字符串然后它可能是好的。我们也可以通过执行相同的操作来删除ProgressBar
窗口的横幅文本。请注意,删除属性值不适用于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
答案 4 :(得分:2)
您可以通过修改记事本中的项目文件轻松更改欢迎文本。 (即project1.vdproj)确保更改ProductName或Title。我不记得究竟是哪一个,然后重建项目,你就完成了。
答案 5 :(得分:1)
一种解决方案(如果您的设置创建过程不长) - 您必须从头开始进行设置,并在提示设置名称时将其重命名为“我的设置”。