2015-11-02 3 views
1

У меня есть два отдельных приложения JavaFX, которые я развертываю как родной Windows exe, используя метод, описанный here, но с параметром установки установлено значение true, чтобы он устанавливался на диск C:, а не на данные приложения , По какой-то причине оба приложения устанавливаются в один и тот же каталог, и оба используют один и тот же файл для удаления, что создает для меня серьезную проблему. Каталог, в который он устанавливается, - это какая-либо программа, установленная в первую очередь. Например, если я устанавливаю Program1 сначала, они оба устанавливаются в C:/Program Files/Program1. Если Program2 установлен, они оба устанавливаются в C:/Program Files/Program2. Они оба имеют свои каталоги по умолчанию, установленные в файле установки Inno, и они разные. Кто-нибудь когда-либо сталкивался с этой проблемой раньше? Благодаря!Приложения Java FX в одном и том же каталоге

Вот файл Setup Inno, который генерируется из муравьев строить по программе 1

;This file will be executed next to the application bundle image 
;I.e. current directory will contain folder Program1 with application files 
[Setup] 
AppId={{fxApplication}} 
AppName=Program1 
AppVersion=1.4.0 
AppVerName=Program1 1.4.0 
AppPublisher=My Company 
AppComments=Program1FX 
AppCopyright=Copyright (C) 2015 
;AppPublisherURL=http://java.com/ 
;AppSupportURL=http://java.com/ 
;AppUpdatesURL=http://java.com/ 
DefaultDirName={pf}\Program1 
DisableStartupPrompt=Yes 
DisableDirPage=Yes 
DisableProgramGroupPage=Yes 
DisableReadyPage=Yes 
DisableFinishedPage=Yes 
DisableWelcomePage=Yes 
DefaultGroupName=My Company 
;Optional License 
LicenseFile= 
;WinXP or above 
MinVersion=0,5.1 
OutputBaseFilename=Program1-1.4.0 
Compression=lzma 
SolidCompression=yes 
PrivilegesRequired=admin 
SetupIconFile=Program1\Program1.ico 
UninstallDisplayIcon={app}\Program1.ico 
UninstallDisplayName=Program1 
WizardImageStretch=No 
WizardSmallImageFile=Program1-setup-icon.bmp 
ArchitecturesInstallIn64BitMode=x64 


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

[Files] 
Source: "Program1\Program1.exe"; DestDir: "{app}"; Flags: ignoreversion 
Source: "Program1\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs 

[Icons] 
Name: "{group}\Program1"; Filename: "{app}\Program1.exe"; IconFilename: "{app}\Program1.ico"; Check: returnTrue() 
Name: "{commondesktop}\Program1"; Filename: "{app}\Program1.exe"; IconFilename: "{app}\Program1.ico"; Check: returnTrue() 


[Run] 
Filename: "{app}\Program1.exe"; Parameters: "-Xappcds:generatecache"; Check: returnFalse() 
Filename: "{app}\Program1.exe"; Description: "{cm:LaunchProgram,Program1}"; Flags: nowait postinstall skipifsilent; Check: returnTrue() 
Filename: "{app}\Program1.exe"; Parameters: "-install -svcName ""Program1"" -svcDesc ""Program1"" -mainExe ""Program1.exe"" "; Check: returnFalse() 

[UninstallRun] 
Filename: "{app}\Program1.exe "; Parameters: "-uninstall -svcName Program1 -stopOnUninstall"; Check: returnFalse() 

[Code] 
function returnTrue(): Boolean; 
begin 
    Result := True; 
end; 

function returnFalse(): Boolean; 
begin 
    Result := False; 
end; 

function InitializeSetup(): Boolean; 
begin 
// Possible future improvements: 
// if version less or same => just launch app 
// if upgrade => check if same app is running and wait for it to exit 
// Add pack200/unpack200 support? 
    Result := True; 
end; 

и Программа 2

;This file will be executed next to the application bundle image 
;I.e. current directory will contain folder Program2 with application files 
[Setup] 
AppId={{fxApplication}} 
AppName=Program2 
AppVersion=1.3.1 
AppVerName=Program2 1.3.1 
AppPublisher=My Company 
AppComments=Program2 
AppCopyright=Copyright (C) 2015 
;AppPublisherURL=http://java.com/ 
;AppSupportURL=http://java.com/ 
;AppUpdatesURL=http://java.com/ 
DefaultDirName={pf}\Program2 
DisableStartupPrompt=Yes 
DisableDirPage=Yes 
DisableProgramGroupPage=Yes 
DisableReadyPage=Yes 
DisableFinishedPage=Yes 
DisableWelcomePage=Yes 
DefaultGroupName=My Company 
;Optional License 
LicenseFile= 
;WinXP or above 
MinVersion=0,5.1 
OutputBaseFilename=Program2-1.3.1 
Compression=lzma 
SolidCompression=yes 
PrivilegesRequired=admin 
SetupIconFile=Program2\Program2.ico 
UninstallDisplayIcon={app}\Program2.ico 
UninstallDisplayName=Program2 
WizardImageStretch=No 
WizardSmallImageFile=Program2-setup-icon.bmp 
ArchitecturesInstallIn64BitMode=x64 


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

[Files] 
Source: "Program2\Program2.exe"; DestDir: "{app}"; Flags: ignoreversion 
Source: "Program2\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs 

[Icons] 
Name: "{group}\Program2"; Filename: "{app}\Program2.exe"; IconFilename: "{app}\Program2.ico"; Check: returnTrue() 
Name: "{commondesktop}\Program2"; Filename: "{app}\Program2.exe"; IconFilename: "{app}\Program2.ico"; Check: returnTrue() 


[Run] 
Filename: "{app}\Program2.exe"; Parameters: "-Xappcds:generatecache"; Check: returnFalse() 
Filename: "{app}\Program2.exe"; Description: "{cm:LaunchProgram,Program2}"; Flags: nowait postinstall skipifsilent; Check: returnTrue() 
Filename: "{app}\Program2.exe"; Parameters: "-install -svcName ""Program2"" -svcDesc ""Program2"" -mainExe ""Program2.exe"" "; Check: returnFalse() 

[UninstallRun] 
Filename: "{app}\Program2.exe "; Parameters: "-uninstall -svcName Program2 -stopOnUninstall"; Check: returnFalse() 

[Code] 
function returnTrue(): Boolean; 
begin 
    Result := True; 
end; 

function returnFalse(): Boolean; 
begin 
    Result := False; 
end; 

function InitializeSetup(): Boolean; 
begin 
// Possible future improvements: 
// if version less or same => just launch app 
// if upgrade => check if same app is running and wait for it to exit 
// Add pack200/unpack200 support? 
    Result := True; 
end; 
+2

Благодаря Заку, это работало отлично для меня !! У меня была та же проблема и она была решена с использованием того же идентификатора для атрибутов ** name ** AND ** id **, потому что в большинстве случаев ** id ** и ** name ** имеют одинаковое значение. Существуют некоторые исключения для инсталляторов InnoSetup (.exe), которые поясняются [здесь] (http://www.jrsoftware.org/ishelp/index.php?topic=setup_appid). Вы даже можете использовать свойство ant, если хотите сделать имя, настраиваемое в файле свойств.

ответ

4

Хорошо, я не могу поверить, что я не видел его раньше но проблема заключается в AppId

build.fxbuild устанавливает id в fxApplication по defau lt, вручную отредактируйте файл build.fxbuild, чтобы иметь уникальное приложение id. Есть несколько других мест в build.fxbuild что ссылки fxApplication поэтому убедитесь, что их изменить, а

<fx:application id="UNIQUE_NAME_HERE" 
... /> 
Смежные вопросы