
ãã¹ãŠã®äººã«è¯ãäžæ¥ãïŒ
ååã®èšäºã§ã¯ãããããçæããã¿ã¹ã¯ãèšå®ããWixäžã§ããããäœæããããã®ãã¯ãããžãŒã®æŠèŠãéå§ããŸããïŒ
PatchWizã䜿çšïŒã åãå Žæã§ãåé¡ãå®å
šã«è§£æ±ºããã«ã¯ãäœãä»ã®ãã®ããå¿
èŠã§ãããšããçµè«ã«éããŸããã ããŒã2ãžãããããããã§ã¯ããã¹ãŠã®ãœãŒã¹ã³ãŒãã䜿çšããŠçµç¹çããã³æè¡çãªã¢ãããŒãã説æããŸãã
ãããããç§ã¯ç§ãã¡ã®ã¢ãããŒããã€ãŸãããã°ãã§ã¯ãªãç§ã®çµéšãšçµæã説æããŠãããšèšããŸãã
ãã®ãããååææãããã¹ãŠã®æ¬ ç¹ãåé¿ããããã«ãã€ã³ã¹ããŒã«ãäœæããããã®ã«ãŒã«ãšããããäœæããããã®ãŠãŒãã£ãªãã£ãéçºããå¿
èŠããããŸããã
åé¡ã«å¯Ÿããçµç¹çãªè§£æ±ºç
ãããè¡ãããšã«ããŸãããã€ã³ã¹ããŒã«ã¯
ããŒãžã¢ãžã¥ãŒã«ããçµã¿ç«ãŠãã
ãŸã ã
ç¹å®ã®åºæ¬ã¢ã»ã³ããªïŒããŒã¹ã©ã€ã³ïŒãéžæãããŸããããã«ã¯ãå
šå¡ã«å¿
é ã®ãã€ããªãå«ãã¢ãžã¥ãŒã«ãå«ãŸããŸãã 圌女ã¯è£œåã®æ°ããããŒãžã§ã³ããšã«è¡ã£ãŠããŸãã ããã«ã
ãã«ãçªå·ã®ã¿ã倿Žãããå Žåã¯ãããŒã¹ããŒãžã§ã³ã
ãã«ãçªå· = 0ã®ä»¥åã®ãã®ã§ããå·®åããããäœæãããŸãïŒåç
§ã¢ã»ã³ããªãšåŒã³ãŸãããïŒã

æé軞äžã®åã¯ãäœæãããã¢ã»ã³ããªã瀺ããŸãã ãµããŒãã¢ã»ã³ããªã¯éã§ããŒã¯ãããç·ã¯ä»¥åã®ãµããŒãã¢ã»ã³ããªã«åºã¥ããŠç°ãªãããããäœæããããã«äœ¿çšãããŸãã ãŸããããã«ã以åã®ãµããŒãã¢ã»ã³ããªã«åºã¥ããŠããµããŒãã¢ã»ã³ããªçšã®å·®åããããäœæãããŸãã
ãããã£ãŠãã¯ã©ã€ã¢ã³ããç§ãã¡ã«ææ°ããŒãžã§ã³ãèŠæ±ãããšããç§ãã¡ã¯åœŒãçŸåšã€ã³ã¹ããŒã«ãããããŒãžã§ã³ãæã£ãŠãããã©ããããããŠãã®çªå·ã¯äœã§ãããããã§ãã¯ããŸãã ããã«-å®å
šãªã¢ã»ã³ããªãŸãã¯ããããéä¿¡ãããŸãã
åæ§ã®ã¹ããŒã ãèªåæŽæ°ã§æ©èœããŸã
ãmsiãŸãã¯
mspããã±ãŒãžã¯ãæšæºã®
msiexecããŒã«ã䜿çšããŠã€ã³ã¹ããŒã«ããããµãŒããŒããååŸãããŸãã
ãã®ã¡ã«ããºã ã®å®è£
ãçè§£ããã«ã¯ã次ã®è§£æ±ºçãæ€èšããŠãã ããã
ãœãªã¥ãŒã·ã§ã³ã®æŠèŠ
ãŸãããœãªã¥ãŒã·ã§ã³ã®äžè¬çãªæ§é ãèæ
®ããŸãïŒãã¡ããããã©ã«ããŒã¯ããããããããã«ååãä»ããããŠããŸãïŒã ãã®å®å
šãªãœãŒã¹ã³ãŒãã¯
GitHubã«ã¢ããããŒãã
ã ããªã³ã¯ã¯æåŸã«ãããŸãã

ãã©ã«ããŒã«ã¯ä»¥äžãå«ãŸããŸãã
1.ã¢ããªã±ãŒã·ã§ã³èªäœã
2.
Wixã®æ¡åŒµæ©èœãå«ããã€ã³ã¹ããŒã«ãåéããããã®äžè¬çãªãã¡ã€ã«ã
3.ãããžã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã€ã³ã¹ããŒã«ã
4.ããããäœæããããã®ãŠãŒãã£ãªãã£ã
5.ãã¹ãçšã®ããã£ãŒã·ã£ãã
ãã©ã«ãçªå·ã¯ãå¿
èŠãªã¢ã¯ã·ã§ã³ã®é åºãåæ ããŠããŸãã å§ããŸãããã
æé ã«åŸã£ãŠãã ãã
ã¹ããã1.ã¢ããªã±ãŒã·ã§ã³ãäœæãã
ç§ãã¡ã®ã±ãŒã¹ã§ã¯ãããŒãžã§ã³ã倿ŽããåçŽãªã³ã³ãœãŒã«ã¢ããªã±ãŒã·ã§ã³ãHelloãWorldïŒãã«ãªããŸãã
ã¹ããã2.ã€ã³ã¹ããŒã«çšã®äžè¬çãªããŒããäœæãã
ãã¡ã€ã«ã調ã¹ãŸãã
Deploy.Variables.wxiã¯ããã¹ãŠã®äŒæ¥ã€ã³ã¹ããŒã«ã«å
±éã®å€æ°ã§ãã
<Include> <?define Manufacturer=""?> <?define ManufacturerUrl="http://company.ru"?> <?define Language="1049"?> <?define Codepage="1251"?> </Include>
ããã§ã¯ãã¹ãŠãæç¢ºã§ããããã«æããŸãããã¹ãŠã®ã€ã³ã¹ããŒã«ãããžã§ã¯ãã§äœ¿çšããã倿°ã瀺ãããŠããŸãã
Deploy.Yasen.Variables.wxi-ãã¹ãŠã®è£œåã€ã³ã¹ããŒã«çšã®å
±é
Wixãã¡ã€ã«ïŒ
<Include> <?define ProductName="" ?> <?define YasenProductCode="{06CABA42-492E-49CE-9849-F85E87442E99}"?> <?define YasenUpgradeCode="{BA8CCE3C-4267-4291-B330-16EE510F023B}"?> </Include>
補åã³ãŒããšã¢ããããŒããåå¥ã«å ±åããã®ã¯ãªãã§ããïŒ ãã®ãããå€ãã®å ŽæïŒç°ãªãã€ã³ã¹ããŒã«ãããžã§ã¯ããšãããèšè¿°åïŒã§ããããå¿
èŠã«ãªãããã§ãã
Deploy.Yasen.ProductContent.wxiã¯ãããŸããŸãªã€ã³ã¹ããŒã«ããããã£ãæã€å
±æãã¡ã€ã«ã§ãã
<Include> <Package Id="$(var.PackageId)" InstallerVersion="200" Compressed="yes" Languages="$(var.Language)" SummaryCodepage="$(var.Codepage)" Comments=" $(var.ProductName)" Keywords=", , , , , " Description="$(var.Subject)" InstallScope="perMachine" /> <Property Id="MSIUSEREALADMINDETECTION" Value="1" /> <MajorUpgrade DowngradeErrorMessage =" " AllowDowngrades="no" /> <Upgrade Id='$(var.UpgradeCode)' > <UpgradeVersion OnlyDetect="no" Maximum="$(var.ProductVersion)" IncludeMaximum="no" Property="OLDERVERSIONBEINGUPGRADED" MigrateFeatures="yes" /> </Upgrade> <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" /> </Include>
ãã®ãã¡ã€ã«ã§ã¯ãæçµçã«ä»¥åã®ãã¡ã€ã«ã®å€æ°ã®äœ¿çšãéå§ããŸãïŒãããã¯ãã¡ã€ã³ã®ã€ã³ã¹ããŒã«ãã¡ã€ã«ãäœæãããšãã«ããã§å©çšå¯èœã«ãªããŸãïŒã å¿
é ã®
MediaèŠçŽ ãæå®ãããããã€ãã®è¿œå èŠçŽ ïŒäž»ã«æŽæ°ã«é¢é£ããïŒãæå®ãããŠããŸãã
- MSIUSEREALADMINDETECTION- = 1ã®å Žåãå®éã®ç®¡çè
ã®æš©å©ãèŠæ±ãããŸãïŒUACã䜿çšïŒã
- MajorUpgradeèŠçŽ -ç§ãã¡ã®å Žåã ã¡ãžã£ãŒã¢ããã°ã¬ãŒãã®å¯èœæ§ã瀺ããŸã -æ°ããããŒãžã§ã³ãžã®æŽæ°ã¯èš±å¯ãããå€ãããŒãžã§ã³ãžã®ããŒã«ããã¯ã¯çŠæ¢ãããŠããŸãã
- èŠçŽ ã®ã¢ããã°ã¬ãŒã -å¯èœãªæŽæ°ã®èª¬æãå«ãŸããŠããŸãã
- UpgradeVersionèŠçŽ ã¯ã以åã®ããŒãžã§ã³ã®æ€åºæ¡ä»¶ïŒ UpgradeCodeã«ãã ïŒãšãããããæ€åºãããå Žåã®ã¢ã¯ã·ã§ã³ãèšè¿°ããŸãã å¯èœãªãªãã·ã§ã³ïŒãã¹ãŠãæäŸããããã§ã¯ãããŸããïŒïŒ
æå° -ãã®ã€ã³ã¹ããŒã«ã§æŽæ°ã§ããæå°ããŒãžã§ã³ã
æå€§ -ãã®ã€ã³ã¹ããŒã«ã§æŽæ°ã§ããæå€§ããŒãžã§ã³ã
IncludeMaximum-æå€§ããŒãžã§ã³ã®ãå
æ¬çãïŒããã©ã«ã-ã¯ãïŒã
IncludeMinimum- ãå
æ¬çããªæå°ããŒãžã§ã³ã
ãããã㣠-倿°ã®ååãå«ãŸããŸãã æå®ãããããŒãžã§ã³ã§å¯Ÿå¿ãã補åãèŠã€ãã£ãå Žåããããã®ã³ãŒãã¯ã;ããä»ããŠãã®å€æ°ã«æžã蟌ãŸããŸãã ãã®å€æ°ã®å€ã¯ãããšãã°CustomActionãå®è¡ãããšãã«ãåŸã§åå ã§ããŸãã
OnlyDetect- = ' yes 'ã®å Žåãæå®ãããããŒãžã§ã³ã®ã¿ãæ€åºãããæå®ãããããããã£ã«æžã蟌ãŸããŸããããããã¯ã¢ã³ã€ã³ã¹ããŒã«ãããŸããã
IgnoreRemoveFailure-æ€åºãããããŒãžã§ã³ãã¢ã³ã€ã³ã¹ããŒã«ãããšãã«ãšã©ãŒãç¡èŠãããã©ãããæç€ºããŸãã
ãã®å Žåã
UpgradeCode㯠ã
UpgradeCodeå
ã§ä»¥åã®ãã¹ãŠã®ããŒãžã§ã³ãã¢ããã°ã¬ãŒãã§ããããã«æ§æãããŠããŸãã
ããã«é²ãã§ãã ããïŒ
Deploy.Yasen.PatchCreation.xml-ãã®è£œåã®ãããèšè¿°åã
<Include xmlns="http://schemas.microsoft.com/wix/2006/wi"> <?include Deploy.Variables.wxi?> <?include Deploy.Yasen.Variables.wxi?> <?define PatchDescription=" $(var.ProductName)"?> <PatchCreation Id="$(var.PatchId)" Codepage="$(var.Codepage)" CleanWorkingFolder="yes" OutputPath="patch.pcp" WholeFilesOnly="yes" > <PatchInformation Description="$(var.PatchDescription)" Comments="$(var.PatchDescription)" Manufacturer="$(var.Manufacturer)"/> <PatchMetadata AllowRemoval="yes" Description="$(var.PatchDescription)" ManufacturerName="$(var.Manufacturer)" TargetProductName="$(var.ProductName)" MoreInfoURL="$(var.ManufacturerUrl)" Classification="Update" DisplayName="$(var.PatchDescription) $(var.PatchVersion)"/> <Family DiskId="2" Name="$(var.Family)" SequenceStart="5000" > <UpgradeImage SourceFile="$(var.NewMsi)" Id="NewPackage" > <TargetImage SourceFile="$(var.BaseMsi)" Order="2" Id="BasePackage" IgnoreMissingFiles="no" Validation = "0x00000912" /> </UpgradeImage> </Family> <PatchSequence PatchFamily="$(var.PatchFamily)" Sequence="$(var.PatchVersion)" Supersede="yes" ProductCode="$(var.ProductCode)"/> </PatchCreation> </Include>
第1éš
ã§PatchCreationæ§é
ãååã«è©³ãã
調ã¹ãŸããããããã§ã¯å°ãªããšã2ã€ã®éåžžã«éèŠãªéãã確èªã§ããŸãã
- TargetImageèŠçŽ ã®æ€èšŒå±æ§ã ãããã®ã¹ããããèš±å¯ããã®ã¯ãã®å±æ§ã§ãã ããã§è©³çްã«èª¬æãããŸã ã ãã®ãããè€æ°ã®ããŒãžã§ã³ãæŽæ°ã§ããããã«ããã«ã¯ãéåžžãããããã¹ãŠãïŒ TargetImageèŠçŽ ã䜿çšããŠïŒæå®ããå¿
èŠããããããã«ããããããã®ãµã€ãºã倧ãããªããŸãã èŠä»¶ãšçµç¹çãªå¯ŸçïŒããŒãžã§ã³ã®ååïŒãèæ
®ããŠã以åã®ãµããŒãã¢ã»ã³ããªãšå€912ã® æ€èšŒãã©ã°ã®ã¿ã瀺ãããšãã§ããŸããã ãã®å€ã¯ãã€ã³ã¹ããŒã«ããã補åã«ããããé©çšããããã«ãæ¡ä»¶ãæºããå¿
èŠãããããšã瀺ããŸãïŒ UpgradeCode ã ProductCodeããã³ãããã®magorããã³ãã€ããŒããŒãžã§ã³ïŒæŽæ°å
ïŒããã³ã€ã³ã¹ããŒã«ãããããŒãžã§ã³ã¯äžèŽããå¿
èŠããããŸãïŒãã ãã ãã«ãçªå·ã¯äžèŽããŸããïŒã ãããã£ãŠã ãã€ããŒããŒãžã§ã³å
ã®æŽæ°ã®ã¹ãããã¯èš±å¯ãããŸãã äºã€ãã ããïŒ æ€èšŒã¯ããªãåºãç¯å²ã®å€ããšãããšãã§ããéåžžã«è峿·±ã广ãåŸãããšãã§ããŸãã ãæ¥œãã¿ãã ããïŒ
- PatchCreationãã¡ã€ã«ã¯ãããšãã°var.PatchFamily ã var.PatchVersionãªã©ã以åã«çºè¡šãããŠããªã倿°ã䜿çšããŸãã ãããã®äœ¿çšã¯ãã¹ããã4ã§æããã«ãªããŸãã
ãŸããã¹ããã2ã«ã¯ãç¹å®ã®
Incom.WixExtensionsãããžã§ã¯ãïŒãã©ã«ããŒå
ïŒããããŸãã ããã¯
Wixã®æ¡åŒµåãæã€ãããžã§ã¯ãã§ãã ããã«è«ççã«ååšããå¿
èŠãããããã®äœ¿çšã¯ã¹ããã3ã§æããã«ãªããŸãã
ã¹ããã3.äžéšã®ã客æ§ã®ã€ã³ã¹ããŒã«ãåéããŸã
æåã«ãåã«å®£èšãã倿°ã«
Wixãã¡ã€ã«ãæ¥ç¶ããŸãã
<?define WixCommonPath="$(var.ProjectDir)..\"?> <?include $(var.WixCommonPath)\Deploy.Variables.wxi?> <?include $(var.WixCommonPath)\Deploy.Yasen.Variables.wxi?>
ãã®åŸããœãããŠã§ã¢ã®ããŒãžã§ã³ãšçŸåšã®è£œåã³ãŒãããã³æŽæ°ã©ã€ã³ãçºè¡šããŸãã
<?define Subject=" "?> <?define ProductVersion="$(incom.FileVersion($(var.Yasen.UI.TargetPath)))"?> <?define UpgradeCode="$(var.YasenUpgradeCode)"?> <?define ProductCode="$(incom.ChangeGuid($(var.YasenProductCode),$(var.ProductVersion), 2))"?>
UpgradeCode㯠ã
çŸç¶ã®ãŸãŸ ã䜿çšãããäœããã®å€æã補åã³ãŒãã«é©çšãããããšã«æ³šæããŠãã ããã
ãã®å€æã䜿çšããŠã次ã®ç®æšãç®æããŠåªåããŸãïŒ
ãã«ãçªå·ã倿Žããå Žå
ã補åã³ãŒãã¯å€æŽããŠããããäœæã§ããªãããã«ãã
ã¡ãžã£ãŒããŒãžã§ã³ãŸãã¯
ãã€ããŒããŒãžã§ã³ã倿Žããå Žåã¯
補åã³ãŒãã倿Žããå¿
èŠããããŸãïŒããã¯ååã§èª¬æããŸããïŒã ãããã£ãŠã以äžãå®è¡ããŸããã°ããŒãã«å€æ°ãã補åã³ãŒãã䜿çšãã倿颿°ãåŒã³åºããŠãæçµããŒãžã§ã³ãäŸåããããŒãžã§ã³ã®éšåã瀺ããŸãã ããã«ã1-
ã¡ãžã£ãŒã®ã¿ããã2-
ã¡ãžã£ãŒãš
ãã€ããŒããããããŠå€4ãšã®é¡æšã«ãã£ãŠã
äžèšã®
Wixæ¡åŒµæ©èœã®æéã§ãã
ãã®èšäºã®ç®çã¯
Wixã®æ¡åŒµæ©èœãäœæããããã®æè¡ã説æããããšã§ã¯ãªãããïŒ
ããã§ç¢ºèªã§ã
ãŸã ïŒãç°¡åãªèŠçŽã瀺ããŸãïŒ
EvaluateFunctionã¡ãœãããåå®çŸ©ãããããªããã»ããµãŒã®æ¡åŒµæ©èœãäœæãããŸãã
incomãã¬ãã£ãã¯ã¹ãæã€é¢æ°ã䜿çšããå Žåã
Wixã«ãã£ãŠåŒã³åºãããŸãã
ãã®ã¡ãœããã§ã¯ã2ã€ã®æ©èœãå®è¡ããŸãã
â¢ãã¡ã€ã«ããŒãžã§ã³ã®ååŸ
â¢ãŠãããŒãµã«
ã¬ã€ã倿޿©èœ
颿°èšç®ã®ããã®Wixæ¡åŒµã³ãŒãã¹ãããã ãããã£ãŠãã³ãŒãã¯äºæž¬ã©ããã«åäœãã補åã®ããŒãžã§ã³ã«äŸåããŸãã ã³ãŒããå°ã倿Žãããšã-
ãã«ãçªå·ã倿ŽããïŒ2ã3é±éã«1åïŒããã£ãšæ·±å»ãªããš-
ãã€ããŒçªå·ã倿ŽããïŒ2ã3ãæã«çŽ1åïŒããšã§åç
§ã¢ã»ã³ããªãäœæããŸãã ãã¹ãŠãäžèŽãããšã
ã¡ãžã£ãŒçªå·ãå€ãããŸãïŒçŽ3ã4幎ã«1åïŒã
wixãã¡ã€ã«ã«
æ»ããŸãã ããã«ããã¹ãŠãæšæºã§ããäžèšã§å®£èšãã倿°ã䜿çšããŠã
Productãããã¯ãäœæãããã¡ã€ã«ãã³ã³ããŒãã³ããæ©èœãæå®ããåã®æé ã§èª¬æãã
Deploy.Yasen.ProductContentã䜿çšããŸãã
<Product Id="$(var.ProductCode)" Name="$(var.ProductName)" Language="$(var.Language)" Version="$(var.ProductVersion)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)" > <?include $(var.WixCommonPath)\Deploy.Yasen.ProductContent.wxi?> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFilesFolder"> <Directory Id="APPLICATIONFOLDER" Name="$(var.ProductName)" DiskId="1" > <Component Id="Component1" Guid="{1F4A6EF3-4B65-4405-8E08-D750E5038C75}"> <File Id="File1" Name="content.txt" Source="..\..\Incom.Yasen.Content\content.txt"/> <File Id="File2" Name="Yasen.UI.exe" Source="$(var.Yasen.UI.TargetPath)"/> </Component> </Directory> </Directory> </Directory> <Feature Id="ClientSide" Title=" $(var.ProductName)" Level="1" Absent="disallow"> <ComponentRef Id="Component1"/> </Feature> </Product>
ã¹ããã4.ããããäœæãã
ããã§ã補åã®ã€ã³ã¹ããŒã«ãäœæããããã«å¿
èŠãªãã¹ãŠãæããŸããããããå®è¡ã§ããŸãããç®æšã¯ãããã§ãã
ããŒã1ã§è¿°ã¹ãããã«ãã³ãã³ãã©ã€ã³ããããããäœæããã®ã¯ããªãé¢åãªã®ã§ããã®ã¹ãããã§ã¯ãããã®ã¹ããããå®è¡ããæ°ãããŠãŒãã£ãªãã£
MakeMspãäœæããŸãã 䜿çšèŠä»¶ã¯æ¬¡ã®ãšããã§ããåŒæ°ã¯ãããŒã¹ã¢ã»ã³ããªãæçµã¢ã»ã³ããªããããèšè¿°åãããã³çµæãžã®ãã¹ã瀺ããŸãã
Incom.MakeMsp.exe "YasenSetup1.msi" "YasenSetup1.0.1.msi" "Deploy.Yasen.PatchCreation.xml" "Patch.msp"
äžè¬çã«ãã¢ã«ãŽãªãºã ã¯æ¬¡ã®ãšããã§ãã
1.äž¡æ¹ã®
msiãäžæãã©ã«ããŒã«ã³ããŒããŸã
ã³ãŒãããŒã¹ã®ã³ã㌠Task.WaitAll( Task.Run( () => { Console.WriteLine("Start copying RTM..."); File.Copy(args[0], rtmFilePath, true); Console.WriteLine("Finished copying RTM..."); }) , Task.Run( () => { Console.WriteLine("Start copying latest..."); File.Copy(args[1], latestFilePath, true); Console.WriteLine("Finished copying latest..."); }));
2.æé 2ã§
PatchCreationãäœæãã
ãšãã« ãæªç¥ã®å€æ°ã䜿çšããããšãæãåºããŠãã ããã ããããèå¥ããæéã§ãã ãã®ããããŠãŒãã£ãªãã£ã¯ãããã®å€æ°ã®å€ãæžã蟌ãŸãã
Wixæ§é ãæã€äžæãã¡ã€ã«ãäœæããŸãã
ããããäœæããããã®å€æ°ãå«ããã¡ã€ã«ãäœæããã³ãŒã var productName = MsiReader.GetMSIParameters(latestFilePath, "ProductName"); var wixPachCreationReference = string.Format( @"<?xml version=""1.0"" encoding=""utf-8""?> <Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'> <?define Family='{0}'?> <?define PatchFamily='{0}'?> <?define PatchId='{1}'?> <?define ProductCode='{2}'?> <?define PatchVersion='{3}'?> <?define BaseMsi='{4}'?> <?define NewMsi='{5}'?> <?include {6}?> </Wix>", new string(Transliterate(productName).Where(char.IsLetterOrDigit).Take(8).ToArray()), Guid.NewGuid().ToString(), MsiReader.GetMSIParameters(latestFilePath, "ProductCode"), MsiReader.GetMSIParameters(latestFilePath, "ProductVersion"), Path.Combine(rtmPath, "rtm.msi"), Path.Combine(latesPath, "last.msi"), Path.GetFullPath(args[2]) );
é³èš³ä»ãã®è£œåã®ååã¯
PatchFamilyãšããŠäœ¿çšãã
ãŸã ã
PatchIdã¯æ°ãã
GUIDã§ãã
ProductCode ã
PatchVersion-æçµçãª
msi ã
BaseMsiããã³
NewMsiããæœåº-äžæ
msiãžã®ãã¹ïŒäžæãã©ã«ããŒã«ã³ããŒïŒã æåŸã«ããã¡ã€ã«èªäœã«
PatchCreationã
å«ããŸãã
3.次ã«ãããŒã1ã§èª¬æããã³ã³ãã€ã«æé ãå®è¡ãããŸãã
管çã€ã³ã¹ããŒã«ïŒ
exec("msiexec", string.Format("/a \"{0}\" /qn TARGETDIR=\"{1}\\\"", rtmFilePath, rtmPath)); exec("msiexec", string.Format("/a \"{0}\" /qn TARGETDIR=\"{1}\\\"", latestFilePath, latesPath));
ãããã®ã³ã³ãã€ã«ãšäœæïŒ
exec("candle", string.Format("\"{0}\" -out \"{1}\\patch.wixobj\"", Path.Combine(tempDir, "desc.xml"), tempDir)); exec("light", string.Format("\"{0}\\patch.wixobj\" -out \"{0}\\patch.pcp\"", tempDir)); exec("msimsp", string.Format("-s \"{0}\\patch.pcp\" -p \"{1}\" -l \"{0}\\msimsp.log\"", tempDir, args[3]));
ã¹ããã5.ãã¹ãŠã®ã³ã³ãã€ã«
ã€ã³ã¹ããŒã«ãããžã§ã¯ãã
Wixã®æ¡åŒµæ©èœããããèšè¿°åãããããäœæããããã®ãŠãŒãã£ãªãã£ãªã©ãå¿
èŠãªãã®ã¯ãã¹ãŠæã£ãŠããŸãã ããããã¹ãŠãŸãšãããšãã§ãã
ãããè¡ãããã«ããœãªã¥ãŒã·ã§ã³ã®ã«ãŒãã«
CompileAll.batãã¡ã€ã«ããããããããã¹ãŠãŸãšããŠïŒ
ãã¬ãŒã ã¯ãŒã¯4.0ãå¿
èŠã§ãïŒãçµæã
Releasesãã©ã«ããŒã«å
¥ããŸãã ããã¯ãã¹ãŠãœãŒã¹ã§ç¢ºèªã§ããŸãã
çµæã䜿çšãã
CompileAll.batãå®è¡ããåŸã®çµæã

æŽæ°ããã
DblClickã§ããŒãžã§ã³1ã
ã€ã³ã¹ããŒã«ã§ããŸãã çµæïŒ
DblClickã䜿çšã
ãŠãããã
ã€ã³ã¹ããŒã«ããããšãã§ããŸãã

ã€ã³ã¹ããŒã«ãããæŽæ°ã衚瀺ãããšãããã衚瀺ãããŸãã

ãã«ããã¯ã¢ããããŒã
å®å
šãª
msiããã±ãŒãžã䜿çšããŠããŒãžã§ã³ã1.0.0ãã1.0.1ã«æŽæ°ããå¿
èŠãããå Žåã¯ã次ã®ãã©ã¡ãŒã¿ãŒã§ã³ã³ãœãŒã«ã䜿çšããå¿
èŠããããŸãã
msiexec /i YasenSetup1.0.1.msi REINSTALL=ALL REINSTALLMODE=vomus
ããã«ïŒ
REINSTALL-æŽæ°äžã«ãã®ããã±ãŒãžã«ãã£ãŠåã€ã³ã¹ããŒã«ãããæ©èœã瀺ããŸãïŒãã¹ãŠã瀺ããŸãïŒã ãã®ããããã£ãæå®ããªãå Žåãããã±ãŒãžïŒããã³ã€ã³ã¹ããŒã«ãããŠããå€ãããŒãžã§ã³ïŒãå®è¡ããããšãããšããå¥ã®ããŒãžã§ã³ãæ¢ã«ã€ã³ã¹ããŒã«ãããŠããŸãããšããã¡ãã»ãŒãžã衚瀺ãããŸãã ïŒ
詳现 ïŒ
REINSTALLMODE-ãã¡ã€ã«ã®åã€ã³ã¹ããŒã«ïŒæŽæ°ïŒãæ£ç¢ºã«è¡ãããæ¹æ³ã瀺ãããããã£ã ïŒ
詳现 ïŒã ç§ãã¡ã®å Žåãããã¯æ¬¡ã®ãšããã§ãã
v-ããŒã«ã«ã¹ãã¬ãŒãžã«ããã±ãŒãžããã£ãã·ã¥ããå¿
èŠããããŸãã å®éãå補åïŒ
ProductCode ïŒã«ã€ããŠã
Windowsã¯è£œåãé
ä¿¡ããã
Package.Idã®å€ãèšæ¶ããŠããŸãã 補åãæ¢ã«ã€ã³ã¹ããŒã«ãããŠãããã³ã³ãã³ããšããŒãžã§ã³ãåäžã§ãããã
Package.Idãç°ãªãããã±ãŒãžïŒãœãªã¥ãŒã·ã§ã³ãåæ§ç¯ããã ãïŒãã€ã³ã¹ããŒã«ããããšãããšã
Package.Idã®ãã£ãã·ã¥ãããå€
ã¯ãæ°ããã€ã³ã¹ããŒã«ã®
Package.IdãšäžèŽãã
ãã€ã³ã¹ããŒã«ããããšããèŠåãçºè¡ãããŸãå¥ã®ããŒãžã§ã³ã
vã䜿çšãã
ãš ã
Package.Idã®ã³ã³ãã©ã€ã¢ã³ã¹ããã§ãã¯ãããŸããã
o-çŸåšã®ããŒãžã§ã³ãæ°ããããŒãžã§ã³ãããå°ãããããã¡ã€ã«ããªãå Žåã¯ããã¡ã€ã«ãæžãæããŸãã
m-ã¬ãžã¹ããªããŒãäžæžãããŸãïŒ
HKEY_LOCAL_MACHINEããã³
HKEY_CLASSES_ROOT ïŒ
u-ã¬ãžã¹ããªããŒãäžæžãããŸãïŒ
HKEY_CURRENT_USERããã³
HKEY_USERS ïŒ
s-ãã¹ãŠã®ã·ã§ãŒãã«ãããæžãæããã¢ã€ã³ã³ãã£ãã·ã¥ãæžãæããŸãã
ãã®äžäŸ¿ãªæŽæ°æ¹æ³ãåé¿ãã
DblClickã®ã¿ã
æ©èœããããªãã·ã§ã³ããããŸãããããã¯ãŸã£ããå¥ã®è©±ã§ãã
ãŸãšãããš
ãã®ãããåé¡ã解決ããããã«ãæ¬¡ã®æé ãå®è¡ãããŸããã
1ïŒãšã³ããŠãŒã¶ãŒåãã®
Wixã€ã³ã¹ããŒã«ãäœæããããã®ç¹å¥ãªèŠä»¶ãéçºãããŸããã
aã å
±æãã¡ã€ã«ã§å¯èœãªãã¹ãŠãåãåºãã
ã¢ãžã¥ãŒã«ã
ããŒãžã ã
includeãã£ã¬ã¯ãã£ãã䜿çšã
ãŸã ã
bã åºæ¬å€ã«åºã¥ããŠ
Product.ProductCodeãçæããŸãã
2ïŒããããçæããããã®åäžã®ãããžã§ã¯ããäœæããŸãã
3ïŒãããã®äœæã«åœ¹ç«ã€ç¹å¥ãªãŠãŒãã£ãªãã£ãäœæããŸãã
æçµçµæ
Wixã¯å€§ããªé çã®çš®ã®è§£æ±ºã«åœ¹ç«ã¡ãŸãã
ãã¡ãããããã€ãã®ããšã圱ã®äžã«æ®ã£ãŠããŸãããæãéèŠã§äŸ¡å€ã®ãããã®ãèªè
ã«æç€ºãããŸãã
ããããšã
åç
§ïŒ
GitHubã®ãã¹ãŠã®ãœãŒã¹