簡體   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