Jump to content
Excelsior Forums


  • Content count

  • Joined

  • Last visited


Everything posted by sleepyhead

  1. Verified Publisher

    Ted, thanks for your notice! I will put it into our to-do list.
  2. Files Associations

    Thank you for your kind words! In fact, Excelsior Installer is designed to support only a simple installation scenario. It seems you need slightly more features... Well, if you are not afraid of difficulties, let's try to do that with Excelsior Installer! - Create the file, say, copyMyDocuments.bat. - Put the next lines into this file: rem The first parameter is the installation directory rem Specify $(ROOT) within the Post-Install Actions set rootDir=%1 if %rootDir% == "" goto :EOF rem Set temporary variables set logFile=%rootDir%\copyMyDocuments.log set myDocuments=%HOMEDRIVE%%HOMEPATH%\My Documents set myFolder="%myDocuments%\MyApplication" rem Creare folder.... if not exist %myFolder% mkdir %myFolder% > %logFile% rem ...and copy all files you need rem Don't forget to enclose file name in quotation marks " " copy %rootDir%\"msgsocm.log" %myFolder% >> %logFile% copy %rootDir%\"msmqinst.log" %myFolder% >> %logFile% copy %rootDir%\"MPEditor.ini" %myFolder% >> %logFile% copy %rootDir%\"msdfmap.ini" %myFolder% >> %logFile% copy %rootDir%\"pic17 218.gif" %myFolder% >> %logFile% - Add this file 'copyMyDocuments.bat' to your installation package (at the first page of the packager). - Go to Settings, select Post-install actions, click Add action button. Set Type -> Run always, Target -> copyMyDocuments.bat, Start In -> $(Root), Arguments -> $(Root). At the end of the installation the installer will call copyMyDocuments.bat with the actual arguments, and this command file will copy all files you specified into My Documents folder for the current user.
  3. Yes, the installer can automatically install your software in a customized folder, but you have to specify the folder while preparing the installation package with the help of Excelsior Packager. Yes, you can set the destination folder with /dest "full-path". Note in this case you need also to specify /batch option to launch the installer in automatic, unattended mode. Get more information on the command line arguments: http://installer.excelsior-usa.com/doc/installer/eit011.html#0049
  4. Verified Publisher

    Dear Rudy, I'm sorry for unexpected delay! I guess you mean the message "Unknown Publisher" that is displayed by Windows before the installation. Windows uses its own algorithm to verify the executable file by so-called Digital Signature. The developer can use the utilities like SignTool.exe and SignCode.exe to sign files. These utilities attach the special data to executables to provide Windows the necessary information to verify the publisher. You can find more information about Digital Signature, for example, on http://msdn.microsoft.com. Did that answer you question? Best regards, Alex
  5. Files Associations

    As I know, there is no way to set up the files associations for certain group of files. If you set the association for PDF files to FoxIt Reader, it means that all PDF files on end-user computer will be opened with the help of FoxIt Reader. However, you can create a shortcuts for any files included into your installation package! - Open Excelsior Packager, first add all files you need (at least FoxIt Reader and your PDF files), go to Settings, select Shortcuts tab, then select shortcut desctination, finally, click [ + ] button to add a new shortcut. - From the contents of the package select FoxIt Reader, click Ok. You will see something like 'Target: $(Root)\FoxIt Reader.exe'. - At the 'Arguments:' input line click [Add]. From the contents of the package select your PDF file, click Ok. - If you need, click on rename button [A->B] and type the name your wish. Easy to do than to describe. ) You can add any numbers of shortcuts; all of them will be installed to the end-user computer. If the user will click on such shortcut, FoxIt Reader will start. Do this solution help you to fix the problem?
  6. Well, the good news is that there is no bug with the installer. )
  7. Lucien, could you please write to us by e-mail, support@excelsior-usa.com? It seems we need your help to reproduce the problem... Alex
  8. We apologise for inconvenience. We will try to reproduce the problem. Thanks for the additional information, probably your 'language tip' can help us. Alex Excelsior Installer Team
  9. XDS-C Fatal F450

    XDS-C is designed to be used as a "via C" compiler. It is not suitable for the conversion of Modula-2 source to C. In particular, XDS-C does not preserve constant expressions and comments and uses macros extensively, so the resulting code is difficult to read and maintain, not to mention further development. We have a true Modula-2 to C/C++ converter available on a semi-custom basis. It may be customized to better fit your Modula-2 dialect and library set, conversion rules, output formatting requirements, and any other needs you may have. Alternatively, we could convert your software for you and optionally port it to the platform(s) of your choice. If you are interested, Ahlan, could you please email us or fill in the RFP form?
  10. XDS-C Fatal F450

    To answer your question we need to make an analysis of the problem. Usually a payment makes such analysis much easier. Seriously, I can't understand how to declare a variable placed to the fixed address like TRANRAM [ADDRESS(0FFFFFC00H)] : TransferArea in C? Do you have any ideas?
  11. XDS-C Fatal F450

    Possible workarounds: - If you use TRANRAM only within this module, remove TRANRAM from the definition module to the implementation one. - Declare not variable at the fixed address, but pointer to: DEFINITION MODULE Fatal; FROM SYSTEM IMPORT ADDRESS; TYPE TransferArea = ARRAY [0..15] OF CARDINAL; PTransferArea = POINTER TO TransferArea; VAR TRANRAM: PTransferArea; END Fatal. Fatal.Mod IMPLEMENTATION MODULE Fatal; BEGIN TRANRAM := PTransferArea(ADDRESS(0FFFFFC00H)); END Fatal. Unfortunately, in this case you need to change the other modules as well (TRANRAM^).
  12. Thanks a lot

    Thank you for your kind words O.O.!
  13. Calling an External Executable?

    >> I could not get back to you earlier ? I am in the middle of my exams. No problem. Good luck for your exams!
  14. Calling an External Executable?

    If the function Lib.Exec() succeeds, the return value is nonzero. Check the return value first. Also, try to add ".exe" file extension to the program name like "hh_prog.exe". Note, if the program name does not contain a directory path, Lib.Exec() searches for the executable file in the same sequence as Windows does: - the directory from which the main application started; - the current directory for the main application; - the Windows system directory; - the Windows directory; - the directories that are listed in the PATH environment variable.
  15. Another one to exit from the FOR statement is to throw an exception... But there is no analogue EXIT for the FOR statement.
  16. Some time ago I recommended to read http://www.modula2.org/tutor/index.php; in my opinion, this is very useful tutorial for the M2-beginners. You know, you can find the detailed information on loops statements there. For example, http://www.modula2.org/tutor/chapter4.php "The value of the index must be assumed to be undefined after the loop terminates. You may discover that it is predictable on your compiler, but it may not be on some other compiler, and you may want to transfer your program to another system someday." As I know, there is only one way to prematurely exit from the FOR statement - RETURN.
  17. In such cases you better use any other loops WHILE, REPEAT and LOOP instead of FOR statement. i5 := 0; LOOP IF i5 > Pbdim THEN EXIT; END; (* some code here *) IF (Something here) THEN EXIT; END; (* some code here *) INC(i5); END (* i5 has the last value here *)
  18. Graph library and procedure point

    It seems to me the procedure Graph.Point() does not work at all, unfortunately. You may try to use the next, slightly ugly, code: (* read pixel's color of the screen *) PROCEDURE PointColor(x, y : LONGCARD): Windows.DWORD; VAR gbm: Graph.HBITMAP; wbm: Windows.HBITMAP; color: Windows.DWORD; BEGIN Graph.GetImage(x, y, x, y, gbm); wbm := Windows.HBITMAP(gbm); IF Windows.GetBitmapBits(wbm, SIZE(color), color) = 0 THEN color := Windows.DWORD(-1); END; Graph.DelImage(gbm); RETURN color; END PointColor; Note it return RGB color instead of an index of palette.
  19. Executable Does not Output Anything

    You are welcome! )
  20. Executable Does not Output Anything

    You can catch a lion in a desert by a binary search. HelloWorld works fine for you. Add only half of your modules into your project. Or, better, import only one module into your main module (of course, then you have to comment out some piece of code). Compile and run. Does it work as expected? If yes, add another module and try again. Annoying? Well, but it should help.
  21. C Compiler not Finding IO.sym

    The C library contains IO.h header. To avoid names conflict with the TopSpeed module IO, it is renamed to IO_, so you just need to IMPORT IO_. You can use the conditional compilation to compile the code both by XDS-x86 and by XDS-C compilers, for example: <* IF __GEN_C__ THEN *> FROM IO_ IMPORT WrStr; <* ELSE *> FROM IO IMPORT WrStr; <* END *>
  22. Executable Does not Output Anything

    XDS User's Guide: In the MAKE mode the compiler determines module dependencies using IMPORT clauses and then recompiles all necessary modules. Starting from the files on the command line, it tries to find an Oberon-2 module or a definition and implementaion module for each imported module. It then does the same for each of the imported modules until all modules are located. Usually, a Modula-2 program module or an Oberon-2 top-level module is specified on the command line. In this case, if the LINK equation is set in either configuration file or xc command line, the linker will be invoked automatically in case of successful compilation. This feature allows you to build simple programs without creating project files. So, you do all right.
  23. Executable Does not Output Anything

    The initialization code for all implementation modules is executed before the start of the main program. If a module uses some others (i.e. it has IMPORT clause), all modules that this module depends on are initialized before its own initialization code is executed. So, even if a module has not its body (BEGIN..END part), the compiler generates the special 'hidden' code to call the initialization code for all imported modules, but, really, you needn't know this magic except that the order of initialization cannot be guaranteed. What about reading Modula-2 tutorial? Take a look at http://www.modula2.org/tutor/index.php
  24. Executable Does not Output Anything

    A bug? \ It seems to help you we need to reproduce the problem by ourselves. Could you please reduce your program as small as possible still to reproduce the problem and post it here?
  25. Executable Does not Output Anything

    Quite the contrary, I suggested to remove the module Window from the imports. ) Well, if your program does not import this module at all... Sorry, at the moment I have not idea why the program displays a blank screen after startup.