Итак, добавьте пустой атрибут action
в form
и заполните новый input
заголовком, выбранным при отправке формы. Также измените имя последнего входа, так как searchtitle
уже используется select
, и добавьте атрибут selected
к элементу option
:
<form action="" method="post">
<select name="searchtitle" id="drp_dwn">
<?php
$records = $conn->query("SELECT titles from products");
if ($records->num_rows > 0)
{
while ($row = $records->fetch_assoc())
{
$selected = '';
if ($row['titles'] === Итак, добавьте пустой атрибут action
в form
и заполните новый input
заголовком, выбранным при отправке формы. Также измените имя последнего входа, так как searchtitle
уже используется select
, и добавьте атрибут selected
к элементу option
:
[110]POST['searchtitle'])
{
$selected = 'selected';
}
echo "<option " . $selected . " value=\"" . $row['titles'] . "\"> " . $row['titles'] . "</option>";
}
}
?>
</select>
<input type="submit" class="button" value="Show">
<?php
if (!empty( Итак, добавьте пустой атрибут action
в form
и заполните новый input
заголовком, выбранным при отправке формы. Также измените имя последнего входа, так как searchtitle
уже используется select
, и добавьте атрибут selected
к элементу option
:
[110]POST))
{
?>
<input type="text" id="textArea" class="product-new-textbox" name="searchtitle1" value="<?php echo Итак, добавьте пустой атрибут action
в form
и заполните новый input
заголовком, выбранным при отправке формы. Также измените имя последнего входа, так как searchtitle
уже используется select
, и добавьте атрибут selected
к элементу option
:
[110]POST['searchtitle']; ?>" />
<?php
}
?>
</form>
Можно использовать основанный на COM API для работы с MSI и сделать что-то как
Function GetVersion(ByVal msiName)
Const msiOpenDatabaseModeReadOnly = 0
Dim msi, db, view
Set msi = CreateObject("WindowsInstaller.Installer")
Set db = msi.OpenDataBase(msiName, msiOpenDatabaseModeReadOnly)
Set view = db.OpenView("SELECT `Value` FROM `Property` WHERE `Property` = 'ProductVersion'")
Call view.Execute()
GetVersion = view.Fetch().StringData(1)
End Function
Можно использовать Orca.exe Microsoft. Косатка позволит Вам открывать MSI и редактировать/просматривать все таблицы в нем. Необходимо будет загрузить весь Windows SDK для получения его, но к счастью который свободен.
Одна альтернатива (который мог бы произойти быстрее из-за размера загрузки SDK) должна использовать dark.exe из проекта WiX. Темный декомпилятор MSI, который экспортирует все в XML-файл и набор ресурсов. XML, который это производит, будет иметь информацию, которую Вы ищете.
Набор инструментов WiX : Советы по быстрому запуску WiX (сбор ссылок на ресурсы). WiX устанавливает DTF.
Я просто хочу отметить, что теперь все стало еще проще. Существует полная оболочка .NET для объектной модели установщика Windows, поэтому вы можете избежать проблем с COM-взаимодействием .
DTF - Начало работы : Основной файл:
Microsoft.Deployment. WindowsInstaller.dll
- Загрузите и установите инструментарий WiX
- Найдите файлы ниже в каталоге
WixInstallPath \ SDK
Оболочка называется « Deployment Tools Foundation » ( DTF), и вот основное описание: « Deployment Tools Foundation - это богатый набор библиотек классов .NET и связанных ресурсов, которые вместе переносят технологии платформы развертывания Windows в мир .NET. dll - Расширенные классы для работы с установкой Windows Installer и пакетами исправлений.
Просто создайте проект C #, создайте ссылку на эти файлы и создайте собственное приложение развертывания с любым контролем, который вам нужен и который вам нужен. В настоящий момент я не использую инструменты для DTF, но см. этот пример , чтобы получить общее представление о том, как будет работать программа на C #.
Вот аналогичный пример в VBScript, который я использую как часть процесса сборки при создании исполняемых файлов загрузчика ...
Option Explicit
Const MY_MSI = "product.msi"
Dim installer, database, view, result, sumInfo, sPackageCode
Set installer = CreateObject("WindowsInstaller.Installer")
Set database = installer.OpenDatabase (MY_MSI, 0)
Set sumInfo = installer.SummaryInformation(MY_MSI, 0)
sPackageCode = sumInfo.Property(9) ' PID_REVNUMBER = 9, contains the package code.
WScript.Echo "ProductVersion=" & getproperty("ProductVersion")
WScript.Echo "ProductCode=" & getproperty("ProductCode")
WScript.Echo "PackageCode=" & sPackageCode
WScript.Echo "ProductName=" & getproperty("ProductName")
Function getproperty(property)
Set view = database.OpenView ("SELECT Value FROM Property WHERE Property='" & property & "'")
view.Execute
Set result = view.Fetch
getproperty = result.StringData(1)
End Function