2015-02-02 2 views
2

Я изучаю, как использовать Inno Setup для создания установщика для моего проекта. У меня проблема, когда дело доходит до обновления. Я создал установщик и успешно установил приложение. Затем я обновил номер версии в сценарии и перекомпилировал, однако, когда я запускаю программу установки, кажется, что она все еще рассматривается как новая.Обновление приложения с установщиком Inno Setup

Например, он спросит меня, где я хочу, чтобы приложение было установлено, и когда я нажимаю кнопку «Далее», потом говорит, что каталог уже существует. Поскольку приложение уже установлено. Я ожидал, что этот бит будет пропущен.

Ниже мой InnoSetup Script

; Script generated by the Inno Setup Script Wizard. 
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! 

#define MyAppName "SQLite Manager" 
#define MyAppVersion "1.0.0.2" 
#define MyAppPublisher "Boardies IT Solutions" 
#define MyAppURL "http://www.boardiesitsolutions.com" 
#define MyAppExeName "SqliteManager.exe" 

[Setup] 
; NOTE: The value of AppId uniquely identifies this application. 
; Do not use the same AppId value in installers for other applications. 
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) 
AppId={{98A016AD-2DE2-4FF9-B639-0FDCA0BE41FD} 
AppName={#MyAppName} 
AppVersion={#MyAppVersion} 
;AppVerName={#MyAppName} {#MyAppVersion} 
AppPublisher={#MyAppPublisher} 
AppPublisherURL={#MyAppURL} 
AppSupportURL={#MyAppURL} 
AppUpdatesURL={#MyAppURL} 
DefaultDirName={pf}\Boardies IT Solutions\{#MyAppName} 
DefaultGroupName=Boardies IT Solutions 
LicenseFile=C:\Users\Chris\Documents\Visual Studio 2013\Projects\SqliteManager\SqliteManager\Terms.txt 
OutputBaseFilename=sqliteman 
SetupIconFile=C:\Users\Chris\Documents\Visual Studio 2013\Projects\SqliteManager\SqliteManager\Logo.ico 
Compression=lzma 
SolidCompression=yes 
UsePreviousAppDir=yes 
CreateUninstallRegKey=no 
UpdateUninstallLogAppName=no 
DisableDirPage=auto 

[Languages] 
Name: "english"; MessagesFile: "compiler:Default.isl" 

[Tasks] 
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked 
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1 

[Files] 
Source: "C:\Users\Chris\Documents\Visual Studio 2013\Projects\SqliteManager\SqliteManager\bin\Debug\SqliteManager.exe"; DestDir: "{app}"; Flags: ignoreversion 
Source: "C:\Users\Chris\Documents\Visual Studio 2013\Projects\SqliteManager\SqliteManager\bin\Debug\BoardiesITSolutions.dll"; DestDir: "{app}"; Flags: ignoreversion 
Source: "C:\Users\Chris\Documents\Visual Studio 2013\Projects\SqliteManager\SqliteManager\bin\Debug\BoardiesITSolutions.INIReader.dll"; DestDir: "{app}"; Flags: ignoreversion 
Source: "C:\Users\Chris\Documents\Visual Studio 2013\Projects\SqliteManager\SqliteManager\bin\Debug\changelog.xml"; DestDir: "{app}"; Flags: ignoreversion 
Source: "C:\Users\Chris\Documents\Visual Studio 2013\Projects\SqliteManager\SqliteManager\bin\Debug\EntityFramework.dll"; DestDir: "{app}"; Flags: ignoreversion 
Source: "C:\Users\Chris\Documents\Visual Studio 2013\Projects\SqliteManager\SqliteManager\bin\Debug\EntityFramework.SqlServer.dll"; DestDir: "{app}"; Flags: ignoreversion 
Source: "C:\Users\Chris\Documents\Visual Studio 2013\Projects\SqliteManager\SqliteManager\bin\Debug\Middleware.dll"; DestDir: "{app}"; Flags: ignoreversion 
Source: "C:\Users\Chris\Documents\Visual Studio 2013\Projects\SqliteManager\SqliteManager\bin\Debug\MySql.Data.dll"; DestDir: "{app}"; Flags: ignoreversion 
Source: "C:\Users\Chris\Documents\Visual Studio 2013\Projects\SqliteManager\SqliteManager\bin\Debug\System.Data.SQLite.dll"; DestDir: "{app}"; Flags: ignoreversion 
Source: "C:\Users\Chris\Documents\Visual Studio 2013\Projects\SqliteManager\SqliteManager\bin\Debug\System.Data.SQLite.EF6.dll"; DestDir: "{app}"; Flags: ignoreversion 
Source: "C:\Users\Chris\Documents\Visual Studio 2013\Projects\SqliteManager\SqliteManager\bin\Debug\System.Data.SQLite.Linq.dll"; DestDir: "{app}"; Flags: ignoreversion 
Source: "C:\Users\Chris\Documents\Visual Studio 2013\Projects\SqliteManager\SqliteManager\bin\Debug\WhatsNew.dll"; DestDir: "{app}"; Flags: ignoreversion 
; NOTE: Don't use "Flags: ignoreversion" on any shared system files 

[Icons] 
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" 
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon 
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon 

[Run] 
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent 
+0

Я думаю (у меня нет времени проверить), что предыдущий каталог считывается из ключа реестра, который вы не создаете, когда вы отключили директиву CreateUninstallRegKey. – TLama

+0

Спасибо, я удалил эту директиву, однако она по-прежнему работает, как если бы ее новая установка вместо обновления – Boardy

+0

Остальное должно быть хорошо, я думаю. Вы явно включили 'UsePreviousAppDir' и сохранили директиву' DirExistsWarning', неявно установленную на 'auto', которая не должна предупреждать пользователя, когда они устанавливаются в том же каталоге, что и предыдущая версия. Я думаю, что единственной проблемой было отсутствие информации о предыдущем каталоге (в реестре). Вы удалили все перед тестом? – TLama

ответ

-4

Я заметил, что маленькая деталь AppId = {{98A016AD-2DE2-4FF9-B639-0FDCA0BE41FD}

Похоже, у вас есть недостающий правой фигурной распорка.

+0

Это на самом деле правильный синтаксис –

+0

Формат wise Это правильно. –

+0

Итак, левая фигурная скобка должна быть вроде бежала, но не была правильной? –