diff --git a/bin/test/data/log/test_log.txt b/bin/test/data/log/test_log.txt index cd5deaa7..5d8deac4 100644 --- a/bin/test/data/log/test_log.txt +++ b/bin/test/data/log/test_log.txt @@ -1,4 +1,177 @@ +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml Token.cpp ERROR: Location Id was not referenced by this Token. Edge.cpp ERROR: Edge type_of can't go from Node undefined to Node undefined Node.cpp WARNING: Cannot change NodeType after it was already set from namespace to class diff --git a/deployment/windows/CoatiSetup/CoatiSetup/CoatiSetup.vdproj b/deployment/windows/CoatiSetup/CoatiSetup/CoatiSetup.vdproj index 0bfb60c9..ec229aa2 100644 --- a/deployment/windows/CoatiSetup/CoatiSetup/CoatiSetup.vdproj +++ b/deployment/windows/CoatiSetup/CoatiSetup/CoatiSetup.vdproj @@ -333,6 +333,12 @@ } "Entry" { + "MsmKey" = "8:_7564D8D0A4CC4B378B49F1DCBF78ACFB" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_75DEFB04EB20414488CA26910F7B814D" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -640,6 +646,12 @@ "Entry" { "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_7564D8D0A4CC4B378B49F1DCBF78ACFB" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" "OwnerKey" = "8:_FB29EAD658C3497D9AC46ADE92D33C83" "MsmSig" = "8:_UNDEFINED" } @@ -741,6 +753,20 @@ { "CustomAction" { + "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_0B7392AFE5E4499F88AAA0B860A56C0A" + { + "Name" = "8:Primary output from SetupCreateStartMenuShortcutLib (Active)" + "Condition" = "8:" + "Object" = "8:_7564D8D0A4CC4B378B49F1DCBF78ACFB" + "FileType" = "3:1" + "InstallAction" = "3:1" + "Arguments" = "8:" + "EntryPoint" = "8:" + "Sequence" = "3:3" + "Identifier" = "8:_4122E44E_006C_4364_83D1_B71E2CE35502" + "InstallerClass" = "11:TRUE" + "CustomActionData" = "8:" + } "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_1C7BFD7F75904F828709F1BD762F4C7B" { "Name" = "8:Primary output from SetupRemoveCacheFiles (Active)" @@ -783,6 +809,20 @@ "InstallerClass" = "11:TRUE" "CustomActionData" = "8:" } + "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_400E522BB88046CDBAD0E16CCA411908" + { + "Name" = "8:Primary output from SetupCreateStartMenuShortcutLib (Active)" + "Condition" = "8:" + "Object" = "8:_7564D8D0A4CC4B378B49F1DCBF78ACFB" + "FileType" = "3:1" + "InstallAction" = "3:2" + "Arguments" = "8:" + "EntryPoint" = "8:" + "Sequence" = "3:3" + "Identifier" = "8:_D66DBD31_D6EF_42EA_8EF8_7E54FA970E9C" + "InstallerClass" = "11:TRUE" + "CustomActionData" = "8:" + } "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_463FBB946E6F4CF290A4B7E51ED398E5" { "Name" = "8:Primary output from SetupCreateDesktopShortcutLib (Active)" @@ -825,6 +865,20 @@ "InstallerClass" = "11:TRUE" "CustomActionData" = "8:" } + "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_941C3D250E4842B5AAE31BB5DCFC62A5" + { + "Name" = "8:Primary output from SetupCreateStartMenuShortcutLib (Active)" + "Condition" = "8:" + "Object" = "8:_7564D8D0A4CC4B378B49F1DCBF78ACFB" + "FileType" = "3:1" + "InstallAction" = "3:3" + "Arguments" = "8:" + "EntryPoint" = "8:" + "Sequence" = "3:4" + "Identifier" = "8:_E705159B_3909_494B_8A0D_CB88823DB4D6" + "InstallerClass" = "11:TRUE" + "CustomActionData" = "8:" + } "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_B1A592F73CCB404297211C5D3D86AB5F" { "Name" = "8:Primary output from SetupApplicationSettingsLib (Active)" @@ -853,6 +907,20 @@ "InstallerClass" = "11:TRUE" "CustomActionData" = "8:" } + "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_C5C129627560407AA9B5F55EB20F5621" + { + "Name" = "8:Primary output from SetupCreateStartMenuShortcutLib (Active)" + "Condition" = "8:" + "Object" = "8:_7564D8D0A4CC4B378B49F1DCBF78ACFB" + "FileType" = "3:1" + "InstallAction" = "3:4" + "Arguments" = "8:" + "EntryPoint" = "8:" + "Sequence" = "3:4" + "Identifier" = "8:_EEEA428E_A836_4773_8F9E_419A17879D01" + "InstallerClass" = "11:TRUE" + "CustomActionData" = "8:" + } "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_C8D0F5D371844855A3F74383818871DF" { "Name" = "8:Primary output from SetupApplicationSettingsLib (Active)" @@ -3259,7 +3327,7 @@ "Name" = "8:Microsoft Visual Studio" "ProductName" = "8:Coati" "ProductCode" = "8:{2A3B2FF5-A114-4CAB-88FB-DE8942D5B8EB}" - "PackageCode" = "8:{A4ED6E95-2110-4DFB-915F-8DC8051B4636}" + "PackageCode" = "8:{0439DF0E-299D-4107-8052-74A99FBAA970}" "UpgradeCode" = "8:{CFF09D53-87AF-4241-960D-98C21ED9D358}" "AspNetVersion" = "8:4.0.30319.0" "RestartWWWService" = "11:FALSE" @@ -3449,34 +3517,6 @@ } "Shortcut" { - "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_218124B75F404213855F638598E000A0" - { - "Name" = "8:Uninstall Coati" - "Arguments" = "8:" - "Description" = "8:" - "ShowCmd" = "3:1" - "IconIndex" = "3:0" - "Transitive" = "11:FALSE" - "Target" = "8:_321D6469331341CC94DB61F825F7C38D" - "Folder" = "8:_9537058B4FC1411F8480A52A91F7AB5C" - "WorkingFolder" = "8:_A96454F2CE0E4C55B59EDE1094D40E56" - "Icon" = "8:" - "Feature" = "8:" - } - "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_2FB0983A72CC471C942DB7A2A2DA9E80" - { - "Name" = "8:Coati" - "Arguments" = "8:" - "Description" = "8:" - "ShowCmd" = "3:1" - "IconIndex" = "3:0" - "Transitive" = "11:FALSE" - "Target" = "8:_351F2705D87E4A5AB62BC138ECC736E7" - "Folder" = "8:_9537058B4FC1411F8480A52A91F7AB5C" - "WorkingFolder" = "8:_972788CBF3404779967EA0B73B72BF18" - "Icon" = "8:_096D033F5DF740A6B6B190652E5276AF" - "Feature" = "8:" - } } "UserInterface" { @@ -4267,6 +4307,34 @@ { } } + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_7564D8D0A4CC4B378B49F1DCBF78ACFB" + { + "SourcePath" = "8:..\\SetupCreateStartMenuShortcutLib\\obj\\Release\\SetupCreateStartMenuShortcutLib.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_A96454F2CE0E4C55B59EDE1094D40E56" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + "ProjectOutputGroupRegister" = "3:1" + "OutputConfiguration" = "8:" + "OutputGroupCanonicalName" = "8:Built" + "OutputProjectGuid" = "8:{962F7DA5-AEA1-4D03-89FD-F9AC42C24E46}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_F81B906E39E44A5DAC37B3D70BC8A8CE" { "SourcePath" = "8:..\\SetupCreateDesktopShortcutLib\\obj\\Release\\SetupCreateDesktopShortcutLib.dll" diff --git a/deployment/windows/CoatiSetup/SetupCreateStartMenuShortcutLib/CreateStartMenuShortcut.cs b/deployment/windows/CoatiSetup/SetupCreateStartMenuShortcutLib/CreateStartMenuShortcut.cs index e1c8e2a8..b4a32ec3 100644 --- a/deployment/windows/CoatiSetup/SetupCreateStartMenuShortcutLib/CreateStartMenuShortcut.cs +++ b/deployment/windows/CoatiSetup/SetupCreateStartMenuShortcutLib/CreateStartMenuShortcut.cs @@ -4,6 +4,7 @@ using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Configuration.Install; +using System.IO; using System.Linq; using System.Threading.Tasks; @@ -12,6 +13,9 @@ namespace SetupCreateStartMenuShortcutLib [RunInstaller(true)] public partial class CreateStartMenuShortcut : System.Configuration.Install.Installer { + private static string _appShortcutName = "Coati.lnk"; + private static string _uninstallShortcutName = "Uninstall Coati.lnk"; + public CreateStartMenuShortcut() { InitializeComponent(); @@ -30,37 +34,59 @@ namespace SetupCreateStartMenuShortcutLib app = appDirectory + "Coati.exe"; WshShell shell = new WshShell(); - string shortcutAddress = Environment.GetFolderPath(Environment.SpecialFolder.CommonStartMenu) + "Coati.lnk"; - IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(shortcutAddress); + string shortcutAddress = Environment.GetFolderPath(Environment.SpecialFolder.CommonStartMenu) + "\\Coati\\"; // "\\Coati.lnk"; + + if(!Directory.Exists(shortcutAddress)) + { + Directory.CreateDirectory(shortcutAddress); + } + + IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(shortcutAddress + _appShortcutName); shortcut.Description = "Fast source code reading and navigation"; shortcut.TargetPath = app; shortcut.WorkingDirectory = appDirectory; + shortcut.IconLocation = appDirectory + "data\\gui\\icon\\coati.ico"; shortcut.Save(); + + IWshShortcut uninstallShortcut = (IWshShortcut)shell.CreateShortcut(shortcutAddress + _uninstallShortcutName); + uninstallShortcut.Description = "Uninstall Coati"; + uninstallShortcut.TargetPath = appDirectory + "\\install\\uninstall.bat"; + uninstallShortcut.WorkingDirectory = appDirectory + "\\install"; + uninstallShortcut.Save(); } protected override void OnAfterRollback(IDictionary savedState) { base.OnAfterRollback(savedState); - DeleteDesktopShortcut(); + DeleteShortcuts(); } protected override void OnAfterUninstall(IDictionary savedState) { base.OnAfterUninstall(savedState); - DeleteDesktopShortcut(); + DeleteShortcuts(); } - private void DeleteDesktopShortcut() + private void DeleteShortcuts() { - object shDesktop = (object)"Desktop"; WshShell shell = new WshShell(); - string shortcutAddress = Environment.GetFolderPath(Environment.SpecialFolder.CommonStartMenu) + "Coati.lnk"; + string shortcutAddress = Environment.GetFolderPath(Environment.SpecialFolder.CommonStartMenu) + "\\Coati\\"; - if (System.IO.File.Exists(shortcutAddress)) + if (System.IO.File.Exists(shortcutAddress + _appShortcutName)) { - System.IO.File.Delete(shortcutAddress); + System.IO.File.Delete(shortcutAddress + _appShortcutName); + } + + if (System.IO.File.Exists(shortcutAddress + _uninstallShortcutName)) + { + System.IO.File.Delete(shortcutAddress + _uninstallShortcutName); + } + + if(Directory.Exists(shortcutAddress)) + { + Directory.Delete(shortcutAddress); } } }