wix patch PYRO0103 : The system cannot find the file

血红的双手。 提交于 2019-12-25 03:09:01

问题


I have tried building a patch for my application. I need to replace two files, nothing more. Using a bootstrapper got the files in place, but when uninstalling the bootstrapper the files was gone and not replaced by the old ones(of course). I added Keypath=yes" to my application package(both old and new one) in hope of that would get my problem solved, but no.

I have been following this tutorial: http://wix.tramontana.co.hu/tutorial/upgrades-and-modularization/patchwork

Here is my problem that I get when running this from my command line:

C:\Program Files (x86)\WiX Toolset v3.8\bin>pyro.exe C:\Work\Dev\App\
Patch\Patch.wixmsp -out Patch.msp -t Sample C:\\Work\Dev\App\Patch\dif
f.wixmst 

The result is this:

C:\Work\Dev\App\Installer_3.6.2\AppInstaller\Manager.wxs(181) :
error PYRO0103 : The system cannot find the file '..\App\3.6.2\Manager\Image
s\sort_down_small.png'.
C:\Work\Dev\App\Installer_3.6.2\AppInstaller\Manager.wxs(182) :
error PYRO0103 : The system cannot find the file '..\App\3.6.2\Manager\Image
s\sort_up_small.png'.
C:\Work\Dev\App\Installer_3.6.2\AppInstaller\Manager.wxs(182) :
error PYRO0103 : The system cannot find the file '..\App\3.6.2\Manager\Image
s\sort_up_small.png'.
............

The interesting thing is that my patch.wxs is not including Images.

<?xml version='1.0' encoding='UTF-8'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
  <Patch AllowRemoval="yes" Manufacturer="Company" MoreInfoURL="www.Company.com"
DisplayName="App 3.6.2 patch" Description="Small Update Patch" Classification="Update">
<Media Id='5000' Cabinet='Sample.cab'>
  <PatchBaseline Id='Sample'/>
</Media>
<PatchFamily Id='SamplePatchFamily' Version='1.5.0.0' Supersede='yes'>
  <ComponentRef Id="Assemblies"/>
</PatchFamily>

What can I do?

I found this when googling: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/error-PYRO0103-The-system-cannot-find-the-file-UI-Icons-appicon-ico-if-appicon-ico-is-in-my-latest-wb-td4600799.html

And this sentence might help, but I do not understand it and googling did not give me a good examlpe:

"Change your original command-line to light.exe by changing the extension of the .msi file to .wixout and adding these two arguments to light: -xo -b"

Regards, Andreas


回答1:


You have to change the arguments when creating the MSI Installers.

Say you created your installer Installer.msi like that up to now:

candle Installer.wxs -out Installer.wixobj
light Installer.wixobj -out Installer.msi

You have to change it to this

candle Installer.wxs -out Installer.wixobj
light -bf -xo Installer.wixobj -out Installer.wixout
light Installer.wixout -out Installer.msi

Do this with the old and new installer.

Now you can use torch with the .wixpdb files to create your diff.wixmst

torch -p -xi (PathToOldInstaller)\Installer.wixpdb (PathToNewInstaller)\Installer.wixpdb -out diff.wixmst

And finally create the patch

candle patch.wxs
light patch.wixobj
pyro patch.wixmsp -out patch.msp -t Sample diff.wixmst


来源:https://stackoverflow.com/questions/23358483/wix-patch-pyro0103-the-system-cannot-find-the-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!