У нас есть настольное приложение, установленное через установщик Windows (msi), и мы хотим добавить пользовательское действие, которое перезапускает .exe, когда мы передаем LAUNCH_APP=1
в cmd
.
.У меня есть сценарий VBS, который запускает файл bat, который запускает установить MSI (серьезное обновление):
сценарий VBS:
Set WshShell = CreateObject("WScript.Shell")
Const TemporaryFolder = 2
Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")
Dim tempFolder: tempFolder = fso.GetSpecialFolder(TemporaryFolder)
WshShell.Run chr(34) & WScript.Arguments(0) & chr(34) & chr(32) & chr(34) & tempFolder & "\Lifen\update\LifenInstaller.msi" & chr(34) & chr(32) & chr(34) & WScript.Arguments(1) & chr(34), 0, True
Set WshShell = Nothing
сценарий Bat:
@echo off
call :start >%APPDATA%\Lifen\batMsiLog.log
:start
wmic process where "name='Lifen.exe'" delete
start /wait msiexec /i %1 /qn /norestart /log %APPDATA%\Lifen\msilog.log LAUNCH_APP=1
И в моем установщике wix (wix версии 3.1.0) есть это настраиваемое действие:
<Property Id="WixQuietExecCmdLine" Value='"[INSTALLFOLDER]\Lifen.exe"'/>
<CustomAction Id="QtExecRestartApp" BinaryKey="WixCA" DllEntry="WixQuietExec" Execute="immediate" Return="check"/>
<InstallExecuteSequence>
<Custom Action="QtExecRestartApp" After="InstallFinalize">LAUNCHAPP = 1</Custom>
</InstallExecuteSequence>
Я не знаю, как добавить аргумент (например, —new-version
) в мое настраиваемое действие, чтобы перезапустить мой exe.
В конце я хотел бы запустить команду:
Lifen.exe —new-version
Я пытался написать ее различными способами:
'"[INSTALLFOLDER]\Lifen.exe --new-version=x.x.x"'
'"[INSTALLFOLDER]\Lifen.exe" "--new-version=x.x.x"'
или также после прочтения этого стекового потока: Как добавить аргументы в exe пользовательского действия в Wix?
'""[#"[INSTALLFOLDER]\Lifen.exe"]"" "--new-version"'
'""[#"[INSTALLFOLDER]\Lifen.exe"]"" "--new-version"'
У кого-нибудь есть идея?
Заранее спасибо