Да, это возможно. Взгляните на документацию Shared VPC Overview .
Однако не все ресурсы будут общими, вы можете проверить, какие из них поддерживаются здесь .
Хорошо, пересматривая этот вопрос с моим собственным ответом, предоставляющим миленький сценарий VB, который сделает весь тяжелый подъем. Как упомянуто в исходном вопросе, цель была, предоставляют простое решение для пользователей системного администратора для создания самих обновлений/изменений.
Ниже упрощенная версия кода, который я в настоящее время предоставляю клиентам
Option Explicit
Const MY_CONFIG = "MyConfigApp.xml"
Const CAB_FILE = "config.cab"
Const MSI = "MyApp.msi"
Dim filesys : Set filesys=CreateObject("Scripting.FileSystemObject")
If filesys.FileExists("temp.tmp") Then filesys.DeleteFile("temp.tmp")
filesys.CopyFile MSI, "temp.tmp"
Dim installer, database, database2, view
Set installer = CreateObject("WindowsInstaller.Installer")
Set database = installer.OpenDatabase ("temp.tmp", 1)
Set database2 = installer.OpenDatabase (MSI, 1)
If Not filesys.FileExists(MY_CONFIG) Then WScript.Quit 2 ' No config file, abort!
Dim objFile, size, result, seq, objCab
' MakeCab object has been depreciated so we fallback to makecab.exe for with Windows 7
On Error Resume Next ' Disable error handling, for a moment
Set objCab = CreateObject("MakeCab.MakeCab.1")
On Error Goto 0 ' Turn error handling back on
If IsObject(objCab) Then ' Object creation successful - use XP method
objCab.CreateCab CAB_FILE, False, False, False
objCab.AddFile MY_CONFIG, filesys.GetFileName(MY_CONFIG)
objCab.CloseCab
Set objCab = Nothing
Else ' object creation failed - try Windows 7 method
Dim WshShell, oExec
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("makecab " & filesys.GetFileName(MY_CONFIG) & " " & CAB_FILE)
End If
Set objFile = filesys.GetFile(MY_CONFIG)
size = objFile.Size
Set view = database.OpenView ("SELECT LastSequence FROM Media WHERE DiskId = 1")
view.Execute
Set result = view.Fetch
seq = result.StringData(1) + 1 ' Sequence for new configuration file
Set view = database.OpenView ("INSERT INTO Media (DiskId, LastSequence, Cabinet) VALUES ('2', '" & seq & "', '" & CAB_FILE & "')")
view.Execute
Set view = database.OpenView ("UPDATE File SET FileSize = " & size & ", Sequence = " & seq & ", FileName = 'MYC~2.CNF|MyConfigApp.xml' WHERE File = '" & MY_CONFIG & "'")
view.Execute
database.GenerateTransform database2, "CustomConfig.mst"
database.CreateTransformSummaryInfo database2, "CustomConfig.mst", 0, 0
filesys.DeleteFile("temp.tmp")
Set view = nothing
Set installer = nothing
Set database = nothing
Set database2 = nothing
Set filesys = Nothing
WScript.Quit 0
Обновление: MakeCab. Объект MakeCab.1 обесценивался, код, обновленный, чтобы теперь работать с Windows 7.
Я предполагаю, что Вы создаете msi файл сами (?)
То, когда Вы используете Wix для генерации msi, клиент может просто повторно создать целый msi после замены файла (wix свободно). Иначе должно быть возможно использовать несжатый файл, который не встраивается в msi. В wix необходимо добавить медиа-элемент без атрибута корпуса. Недостаток - то, что необходимо распределить два файла вместо единственного msi.
Необходимо добавить запись в таблицу Media, добавив другой носитель без файла корпуса и LastSequence еще один, чем последняя последовательность файла CAB. Затем необходимо заменить в Таблице файлов последовательность файла с новым файлом и обновить все другие атрибуты файла, которые, возможно, изменились.
ИМХО такой сценарий указывает на отсутствие функции в устанавливаемом приложении, и его легче исправить в приложении, чем взломать MSI.
Позвольте мне Сначала скажите, что простой способ «решить» эту проблему для ваших пользователей - это сказать им, чтобы они запустили административную установку вашего MSI. Это по существу извлечет все файлы из внутренних CAB и поместит все файлы в указанную папку:
msiexec.exe / a myinstaller.msi TARGETDIR = C: \ AdminImage
После этого ваши пользователи смогут перейти непосредственно в извлеченную папку структурируйте и обновите соответствующий файл, а затем сопоставьте каталог с другим ПК и установите MSI. У этого могут быть побочные эффекты, связанные с файлом, имеющим хеш-значение в MSI (чтобы избежать спуфинга), но в большинстве случаев он работает нормально.
Новые версии инструментов развертывания, такие как Installshield и Wix, имеют встроенную поддержку для выполнения запросов XPath во время установки и, следовательно, динамического создания разделов.
Настройка приложения на ПК состоит из нескольких этапов. Во-первых, это развертывание контента на машине - это должно быть сделано с использованием MSI, без сомнения. Однако в большинстве продвинутых приложений требуется несколько «задач настройки после установки», подобных этому «обновлению файла конфигурации».
Почти всегда лучше отложить эти задачи настройки до запуска приложения , а не для реализации функций в MSI. Есть много причин для этого, но наиболее важным является то, что только EXE приложения будет гарантированно работать в правильном пользовательском контексте. Файлы MSI можно запускать с системными правами, с другой учетной записью или с помощью какого-либо другого механизма.
Обычно мы рекомендуем использовать MSI для загрузки всего необходимого контента на ПК . Затем отметьте реестр, чтобы указать приложению, что это первый запуск (для обновлений вы можете увеличить счетчик или записать новый номер версии в HKLM). Затем приложение может выполнить последние шаги настройки в своей программе запуска. Он может скопировать файл config.xml по умолчанию откуда-нибудь из% ProgramFiles% и скопировать его в профиль пользователя. Затем он может считывать требуемые значения из HKLM, записанные MSI, а затем обновлять файл config.xml этими значениями.
В общем: избегайте шагов настройки, выполняемых MSI или любым другим механизмом настройки. Сосредоточьтесь на записи необходимых файлов и элементов реестра на машину, а затем позвольте приложению настроить надлежащую среду выполнения. Это позволит лучше контролировать развертывание. Если хотите, лучше "Инкапсуляция". MSI отправляет «сообщение» приложению через реестр, и приложение знает, «как правильно настроить себя» на основе сообщений.