I am executing a batch file to check if particular file is present or not using IF NOT EXIST
clause through wix bundle. it looks like below
@echo off
set EMS_INSTALL_ROOT="C:\Program Files (x86)\TOOLS\EMS\swVersion.txt"
IF NOT EXIST "%EMS_INSTALL_ROOT%" (
exit 1
)
set /p Version=<"%EMS_INSTALL_ROOT%"
REG ADD HKCU\CurrentSwVersion /v SwVersion /t REG_SZ /d %VERSION% /f
exit 0
and the bundle.wxs file looks like
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name='Language Installer 1.0'
Version='1.0'
UpgradeCode='{CFA901F4-F22D-4826-AF17-CEF08636626A}'
Manufacturer='xxx'>
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense">
<bal:WixStandardBootstrapperApplication
LicenseFile="license.rtf"
SuppressOptionsUI ="yes"
/>
</BootstrapperApplicationRef>
<Chain>
<ExePackage SourceFile="sw_version_check.bat" Compressed="yes"/>
<MsiPackage SourceFile="multilang.msi" Compressed="yes" DisplayInternalUI='yes'/>
</Chain>
</Bundle>
</Wix>
So, when i execute the same batch file form outside, like on command prompt it returns 0
and when i run the same through bundle it returns 1
.
This is the log that i get from bundle
[1140:00EC][2017-11-10T09:46:46]i305: Verified acquired payload: sw_version_check.bat at path: C:\ProgramData\Package Cache\.unverified\sw_version_check.bat, moving to: C:\ProgramData\Package Cache\F791A31D2DE729790CB77093BD38CF43E3FDA802\sw_version_check.bat.
[1140:00EC][2017-11-10T09:46:46]i304: Verified existing payload: multilang.msi at path: C:\ProgramData\Package Cache\{EBB4657C-1AE5-423A-B2E4-2F0E6738BF2F}v1.0.0.0\multilang.msi.
[1140:0E20][2017-11-10T09:46:46]i301: Applying execute package: sw_version_check.bat, action: Install, path: C:\ProgramData\Package Cache\F791A31D2DE729790CB77093BD38CF43E3FDA802\sw_version_check.bat, arguments: '"C:\ProgramData\Package Cache\F791A31D2DE729790CB77093BD38CF43E3FDA802\sw_version_check.bat"'
[1140:0E20][2017-11-10T09:46:46]e000: Error 0x80070001: Process returned error: 0x1
[1140:0E20][2017-11-10T09:46:46]e000: Error 0x80070001: Failed to execute EXE package.
[0DB8:0DC8][2017-11-10T09:46:46]e000: Error 0x80070001: Failed to configure per-machine EXE package.
[0DB8:0DC8][2017-11-10T09:46:46]i319: Applied execute package: sw_version_check.bat, result: 0x80070001, restart: None
[0DB8:0DC8][2017-11-10T09:46:46]e000: Error 0x80070001: Failed to execute EXE package.
I have even tried to run as admin
on bundle.exe but getting same result.
So, Could some one tell me what i am doing wrong here?
EDIT 1
As per the suggestion by @Squashman i made change in the example script and it worked but the same thing i applied for my dynamic script it again started failing. it looks like
@echo off
FOR /F "usebackq skip=2 tokens=1,2*" %%A IN (`REG QUERY "HKLM\SOFTWARE\MANBW" /v "ROOT" 2^>nul`) DO (
set ValueName=%%A
set ValueType=%%B
set "ECS_INSTALL_ROOT=%%CswVersion.txt"
)
IF NOT EXIST "%ECS_INSTALL_ROOT%" (
exit 1
)
set /p Version=<"%ECS_INSTALL_ROOT%"
REG ADD HKCU\CurrentSwVersion /v SwVersion /t REG_SZ /d %VERSION% /f
exit 0
Sorry to bother once again. Please tell me am i applying the suggesting of @Squashman properly in my dynamic script? Please help i have spent 5-6 hrs to make trial and error.
User contributions licensed under CC BY-SA 3.0