سؤال

ولدي المثبت MSI التي أنا بحاجة لإضافة أو تعديل خاصية نصية قصيرة من سطر الأوامر.

وهذا ما ينبغي القيام به بعد بناء المثبت. أنا لا يمكن تعديل العملية التي تنتج المثبت في المقام الأول. كما أن لديها ليتم تنفيذها مقطوعة الرأس من السيناريو.

وعندما أقول "الملكية"، فإنه يمكن أن يكون خاصية MSI، وهي القيمة التي يحصل كتابة إلى بالسجل في تثبيت الوقت، أو أي آلية أخرى يمكن الحصول على هذا نص مخصص قصيرة إلى التطبيق المثبت عند تشغيله.

هل كانت مفيدة؟

المحلول

مثال VBScript التي يمكنك استخدامها لتحديث (أو إضافة) خاصية ما بعد بناء ...

Option Explicit

Const MSI_FILE = "myfile.msi"


Dim installer, database, view

Set installer = CreateObject("WindowsInstaller.Installer")
Set database = installer.OpenDatabase (MSI_FILE, 1)

' Update
Set view = database.OpenView ("UPDATE Property SET Value = '" & myproperty & "' WHERE Property = 'MYPROPERTY'")

' .. or Add (Insert)
Set view = database.OpenView ("INSERT INTO Property (Property, Value) VALUES ('MYPROPERTY', '" & myproperty & "')")
view.Execute


Set database = Nothing
Set installer = Nothing
Set view = Nothing

لمزيد من المعلومات راجع SDK لبرنامج Windows Installer (جزء من في ويندوز SDK )، وهناك مجموعة من سبيل المثال البرامج النصية التي يمكنك استخدامها من سطر الأوامر للقيام بمختلف المهام التلاعب MSI، على سبيل المثال WiRunSQL.vbs تمكنك من تنفيذ SQL التعسفي ضد MSI.

نصائح أخرى

c:\> msiexec /i yourmsi.msi THEPROPERTYNAME=valueofproperty

لمزيد من المعلومات اكتب msiexec في سطر الأوامر.

وتحرير: أو تغيير ملف .msi نفسه باستخدام عبارات SQL وتحديث الملكية في الجدول خصائص: http://msdn.microsoft.com/en-us/ مكتبة / aa372021 (VS.85) .aspx اتصال http://msdn.microsoft.com/en-us/ مكتبة / aa368568 (VS.85) .aspx اتصال

وهذا هو إضافة إلىsaschabeaumont الصورة الإجابة في '09. الآن تستخدم DOTNET 4.0

Option Explicit

Const MSI_FILE = "myFilePath.msi"
Const PROPERTY_STRING_Value = "FooBar"

Dim installer, database, view

Set installer = CreateObject("WindowsInstaller.Installer")
Set database = installer.OpenDatabase (MSI_FILE, 1)

' Update
Set view = database.OpenView ("UPDATE Property SET Value = '" & PROPERTY_STRING_Value & "' WHERE Property = 'MYPROPERTY'")

' .. or Add (Insert)
Set view = database.OpenView ("INSERT INTO Property (Property, Value) VALUES ('MYPROPERTY', '" & PROPERTY_STRING_Value & "')")

view.Execute()
database.Commit()

Set database = Nothing
Set installer = Nothing
Set view = Nothing
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top