Что нового

Некорректная работа установщика

Makrut

Новичок
Сообщения
44
Репутация
2
Здравствуйте, для собственных целей я написал установщик, но проблема заключается в том, что он устанавливает только в корень диска. К примеру, в D: он установит, а в D:\Новая папка он не установит. Прошу совета в том, как исправить данную проблему.
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Установка ", 490, 110, 227, 181)
$Input1 = GUICtrlCreateInput('C:\', 24, 16, 321, 21)
$location = GUICtrlCreateButton("Выбор папки", 360, 14, 113, 24)
$progressbar = GUICtrlCreateProgress(24, 64, 321, 21)
$setup = GUICtrlCreateButton("Установить", 360, 62, 113, 24)
GUISetIcon('C:\Users\Константин\Downloads\favicon.ico')
GUICtrlSetImage ($Form1, 'C:\Users\Константин\Downloads\ico.ico')
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Global $file = 'C:\'

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg

		Case $GUI_EVENT_CLOSE
			Exit

		 Case $location;путь установки
			$file = FileSelectFolder('Выбрать путь', "", 1);выбираем путь установки программы
			DirCreate($file)
			If @error then
			   GUICtrlSetData ($Input1, 'C:\')
			Else
			   GUICtrlSetData ($Input1, $file)
			EndIf

		 Case $setup

			msgBox(0, 'Установка', $file)

			If FileInstall("C:\Users\Константин\Desktop\Управляющий.exe", $file, 1) = 1 Then
			   GUICtrlSetData($progressbar, 25)
			Else
			   MsgBox(0, 'Установка', 'Номер ошибки: ' & @error & '. ' & 'Заново произведите установку или обратитесь к автору ПО.')
			   Exit
			EndIf

			If FileInstall("C:\Users\Константин\Desktop\MySettings.ini", $file, 1) = 1 Then
			   GUICtrlSetData($progressbar, 50)
			Else
			   MsgBox(0, 'Установка', 'Номер ошибки: ' & @error & '. ' & 'Заново произведите установку или обратитесь к автору ПО.')
			   Exit
			EndIf

			If FileInstall("C:\Users\Константин\Desktop\IPs.ini", $file, 1) = 1 Then
			   GUICtrlSetData($progressbar, 75)
			Else
			   MsgBox(0, 'Установка', 'Номер ошибки: ' & @error & '. ' & 'Заново произведите установку или обратитесь к автору ПО.')
			   Exit
			EndIf
			If FileInstall("C:\Users\Константин\Desktop\Исполнитель.exe", $file, 1) = 1 Then
			   GUICtrlSetData($progressbar, 100)
			Else
			   MsgBox(0, 'Установка', 'Номер ошибки: ' & @error & '. ' & 'Заново произведите установку или обратитесь к автору ПО.')
			   Exit
			EndIf
			Sleep (1000)
			GUISetState(@SW_HIDE)

			$Form1 = GUICreate("1", 242, 99, 192, 124)
            $Label1 = GUICtrlCreateLabel("Установить ярлык на рабочий стол?", 26, 16, 188, 33)
			$Button1 = GUICtrlCreateButton("Да", 8, 56, 97, 33)
			$Button2 = GUICtrlCreateButton("Нет", 128, 56, 97, 33)
			GUISetState(@SW_SHOW)
			   While 1
               $nMsg = GUIGetMsg()
				  Switch $nMsg
					 Case $GUI_EVENT_CLOSE
						Exit
                     Case $Button1
						GUISetState(@SW_HIDE)
						FileCreateShortcut  ( $file & "Управляющий.exe" , @DesktopDir & "\Управляющий - Ярлык.lnk")
						MsgBox(0, 'Установка', 'Установка успешно завершена. Приятного пользования.')
						Exit
                     Case $Button2
						GUISetState(@SW_HIDE)
                        MsgBox(0, 'Установка', 'Установка успешно завершена. Приятного пользования.')
						Exit
                  EndSwitch
               WEnd

	EndSwitch
WEnd
 

xishnik

Новичок
Сообщения
51
Репутация
0
В конце пути, куда устанавливаешь у тебя должно быть "\", когда эт просто диск C:\ то там она есть.. а когда выбираешь сам, нету.
если перед установкой добавить:
Код:
$file = ''&$file&'\'

то устанавливается. Вот тебе с твоим примером:
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Установка ", 490, 110, 227, 181)
$Input1 = GUICtrlCreateInput('C:\', 24, 16, 321, 21)
$location = GUICtrlCreateButton("Выбор папки", 360, 14, 113, 24)
$progressbar = GUICtrlCreateProgress(24, 64, 321, 21)
$setup = GUICtrlCreateButton("Установить", 360, 62, 113, 24)
GUISetIcon('C:\Users\Константин\Downloads\favicon.ico')
GUICtrlSetImage ($Form1, 'C:\Users\Константин\Downloads\ico.ico')
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Global $file = 'C:\'

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg

        Case $GUI_EVENT_CLOSE
            Exit

         Case $location;путь установки
            $file = FileSelectFolder('Выбрать путь', "", 1);выбираем путь установки программы
            DirCreate($file)
            If @error then
               GUICtrlSetData ($Input1, 'C:\')
            Else
               GUICtrlSetData ($Input1, $file)
            EndIf

         Case $setup
            $file = ''&$file&'\';тут
            msgBox(0, 'Установка', $file)

            If FileInstall("C:\Users\Константин\Desktop\Управляющий.exe", $file, 1) = 1 Then
               GUICtrlSetData($progressbar, 25)
            Else
               MsgBox(0, 'Установка', 'Номер ошибки: ' & @error & '. ' & 'Заново произведите установку или обратитесь к автору ПО.')
               Exit
            EndIf

            If FileInstall("C:\Users\Константин\Desktop\MySettings.ini", $file, 1) = 1 Then
               GUICtrlSetData($progressbar, 50)
            Else
               MsgBox(0, 'Установка', 'Номер ошибки: ' & @error & '. ' & 'Заново произведите установку или обратитесь к автору ПО.')
               Exit
            EndIf

            If FileInstall("C:\Users\Константин\Desktop\IPs.ini", $file, 1) = 1 Then
               GUICtrlSetData($progressbar, 75)
            Else
               MsgBox(0, 'Установка', 'Номер ошибки: ' & @error & '. ' & 'Заново произведите установку или обратитесь к автору ПО.')
               Exit
            EndIf
            If FileInstall("C:\Users\Константин\Desktop\Исполнитель.exe", $file, 1) = 1 Then
               GUICtrlSetData($progressbar, 100)
            Else
               MsgBox(0, 'Установка', 'Номер ошибки: ' & @error & '. ' & 'Заново произведите установку или обратитесь к автору ПО.')
               Exit
            EndIf
            Sleep (1000)
            GUISetState(@SW_HIDE)

            $Form1 = GUICreate("1", 242, 99, 192, 124)
            $Label1 = GUICtrlCreateLabel("Установить ярлык на рабочий стол?", 26, 16, 188, 33)
            $Button1 = GUICtrlCreateButton("Да", 8, 56, 97, 33)
            $Button2 = GUICtrlCreateButton("Нет", 128, 56, 97, 33)
            GUISetState(@SW_SHOW)
               While 1
               $nMsg = GUIGetMsg()
                  Switch $nMsg
                     Case $GUI_EVENT_CLOSE
                        Exit
                     Case $Button1
                        GUISetState(@SW_HIDE)
                        FileCreateShortcut  ( $file & "Управляющий.exe" , @DesktopDir & "\Управляющий - Ярлык.lnk")
                        MsgBox(0, 'Установка', 'Установка успешно завершена. Приятного пользования.')
                        Exit
                     Case $Button2
                        GUISetState(@SW_HIDE)
                        MsgBox(0, 'Установка', 'Установка успешно завершена. Приятного пользования.')
                        Exit
                  EndSwitch
               WEnd

    EndSwitch
WEnd
 
Верх