vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Standardeinstellung 'Alle Benutzer' im Installationsordner möglich? 
Autor: Moderatorralf_oop (Moderator)
Datum: 01.04.05 19:42

So, hab geschaut, hier das Ergebnis:

In eine vbs-Datei (hier heißt sie WiRunSQL.vbs) kommt folgender Code:

' Windows Installer utility to execute SQL statements against an installer database
' For use with Windows Scripting Host, CScript.exe or WScript.exe
' Copyright (c) Microsoft Corporation. All rights reserved.
' Demonstrates the script-driven database queries and updates
'
Option Explicit

Const msiOpenDatabaseModeReadOnly = 0
Const msiOpenDatabaseModeTransact = 1

Dim argNum, argCount:argCount = Wscript.Arguments.Count
If (argCount < 2) Then
Wscript.Echo "Windows Installer utility to execute SQL queries against an installer database." &_
vbLf & " The 1st argument specifies the path to the MSI database, relative or full path" &_
vbLf & " Subsequent arguments specify SQL queries to execute - must be in double quotes" &_
vbLf & " SELECT queries will display the rows of the result list specified in the query" &_
vbLf & " Binary data columns selected by a query will not be displayed" &_
vblf &_
vblf & "Copyright (C) Microsoft Corporation. All rights reserved."
Wscript.Quit 1
End If

' Scan arguments for valid SQL keyword and to determine if any update operations
Dim openMode : openMode = msiOpenDatabaseModeReadOnly
For argNum = 1 To argCount - 1
Dim keyword : keyword = Wscript.Arguments(argNum)
Dim keywordLen : keywordLen = InStr(1, keyword, " ", vbTextCompare)
If (keywordLen) Then keyword = UCase(Left(keyword, keywordLen - 1))
If InStr(1, "UPDATE INSERT DELETE CREATE ALTER DROP", keyword, vbTextCompare) Then
openMode = msiOpenDatabaseModeTransact
ElseIf keyword <> "SELECT" Then
Fail "Invalid SQL statement type: " & keyword
End If
Next

' Connect to Windows installer object
On Error Resume Next
Dim installer : Set installer = Nothing
Set installer = Wscript.CreateObject("WindowsInstaller.Installer") : CheckError

' Open database
Dim databasePath:databasePath = Wscript.Arguments(0)
Dim database : Set database = installer.OpenDatabase(databasePath, openMode) : CheckError

' Process SQL statements
Dim query, view, record, message, rowData, columnCount, delim, column
For argNum = 1 To argCount - 1
query = Wscript.Arguments(argNum)
Set view = database.OpenView(query) : CheckError
view.Execute : CheckError
If Ucase(Left(query, 6)) = "SELECT" Then
Do
Set record = view.Fetch
If record Is Nothing Then Exit Do
columnCount = record.FieldCount
rowData = Empty
delim = " "
For column = 1 To columnCount
If column = columnCount Then delim = vbLf
rowData = rowData & record.StringData(column) & delim
Next
message = message & rowData
Loop
End If
Next
If openMode = msiOpenDatabaseModeTransact Then database.Commit
If Not IsEmpty(message) Then Wscript.Echo message
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 & vbLf & errRec.FormatText
End If
Fail message
End Sub

Sub Fail(message)
Wscript.Echo message
Wscript.Quit 2
End Sub

In Datei "SetAllUsers.bat" kommt folgendes:

echo Executing SQL command on PaintDotNet.msi: UPDATE Property SET Property.Value = 'ALL' WHERE Property.Property = 'FolderForm_AllUsers'
echo wirunsql.vbs "%1" "UPDATE Property SET Property.Value = 'ALL' WHERE Property.Property = 'FolderForm_AllUsers'"
wscript //B wirunsql.vbs ""%1"" "UPDATE Property SET Property.Value = 'ALL' WHERE Property.Property = 'FolderForm_AllUsers'"

Das ganze packst du in ein eigenes Projekt und führst es nach der Erstellung deines eigentlichen Setup-Projektes (also in Projektbuild-Reihenfolge an letzte Position). Dies ist wichtig, weil durch dieses VB-Skript die MSI-Datei manipuliert wird und die Option geändert wird.

Hoffe, ich hab mich verständlich ausgedrückt

Ralf

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Standardeinstellung 'Alle Benutzer' im Installationsordner m...1.046pipi01.04.05 15:17
Re: Standardeinstellung 'Alle Benutzer' im Installationsordn...812Moderatorralf_oop01.04.05 17:33
Re: Standardeinstellung 'Alle Benutzer' im Installationsordn...838pipi01.04.05 17:46
Re: Standardeinstellung 'Alle Benutzer' im Installationsordn...817Moderatorralf_oop01.04.05 19:26
Re: Standardeinstellung 'Alle Benutzer' im Installationsordn...882Moderatorralf_oop01.04.05 19:42
Re: Standardeinstellung 'Alle Benutzer' im Installationsordn...780pipi02.04.05 19:03
Re: Standardeinstellung 'Alle Benutzer' im Installationsordn...732Moderatorralf_oop02.04.05 19:05
Re: Standardeinstellung 'Alle Benutzer' im Installationsordn...770pipi02.04.05 19:14
Re: Standardeinstellung 'Alle Benutzer' im Installationsordn...763Maywood02.04.05 12:31
Re: Standardeinstellung 'Alle Benutzer' im Installationsordn...755pipi02.04.05 19:17

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel