I have pdftk installed on a shared file server, and it works fine from the server itself.
Is it possible to run pdftk from another computer that has access to the file server, but doesn't have pdftk installed itself?
Any help would be much appreciated.
pdftk doesn't need to be "installed", you just run the binary executable file. If I recall correctly, it does have a dependency on the libgcc library, so this would need to be present somewhere the system can automatically find it (like /windows/system32 on windows, or /lib | /lib64 on linux systems). Then you would just need to make sure the fileserver shares the folder that contains the pdftk binary executable and proper permissions are given.
Related
I have a UNIX executable file which could be executed by just clicking it. I uploaded it to a cloud service, and then downloaded it on another Mac computer. Now this Mac doesn't recognise it as an executable file anymore. So I have to use the chmod +x command. Is there any way to keep the executable nature of the file intact, upon upload and download from the internet?
I could use the chmod +x command to make the downloaded file executable. But it was originally executable. I don't understand why this mode is changed upon upload and download from the internet.
Different cloud services will have different behavior with respect to preserving the Unix file modes and ACLs. When uploaded to a cloud service, the files may be stored on a different type of filesystem or may not be stored as files at all.
On my mac I copied a file to iCloud Drive and the executable mode was preserved. Microsoft OneDrive also preserved the executable mode. Both iCloud Drive and OneDrive integrate with Finder.
You may consider using tar or gzip to create an archive file containing your executable. The archive format will preserve the file modes and the archive file can be stored on any cloud service.
Cannot find tftp command in shell.efi app from Tianocore.
When type tftp, got 'tftp' is not recognized as an internal or external command, operable program, or batch file. Help also doesn't know about it.
I looked at sources and found it is implemented in DynamicCommand directory. Maybe command must be loaded or activated somehow before using?
Edit: well, the only way i found to get tftp client working on Tianocore shell is building ShellPkg from sources. There is DynamicCommand/TftpDynamicCommand subdirectory contains tftp application. It will produce tftp.efi on package building finished. "Manual" can be found here. Still dont understand how to make shell with built-in tftp command and why Tianocore maintainers do not include procompiled tftp.efi in ShellBinPkg for example.
How to Run OVMF article contain information on how to get pre-built OVMF images:
Pre-built images are available at https://www.kraxel.org/repos/
These images are automatically built and track the latest OVMF code in the EDK II tree.
Some of these builds include a seabios CSM and can boot non-UEFI “legacy” operating systems. Note: seabios is GPLv3 licensed)
If your OS doesn’t work with RPM repositories, then you can manually download and decompress the RPM files under jenkins/edk2
You can find the latest OVMF RPM packages at kraxel repository. They contain the latest firmware and UefiShell.iso to boot. You will find tftp command you need and other cool stuff there.
How to use nwjc, Tried to use it from command line from the project path, but getting nwjc: command not found.
Do I need to download anything more than nwbuilder and nw for using nwjc?
You need to download the SDK version of Node Webkit
nwjs-sdk-v0.21.5-win-x64.zip
This contains the nwjc.exe you need to use snapshot command.
Hope this helps
First of all, you must ensure that you install the SDK version of nwjs because the nwjc command line is available in the same folder. You must install the last version of the nwjs SDK version with the following command.
npm install nw --nwjs_build_type=sdk -g
Then, it would be better to find the global npm folder on your computer.
On a macOs, the path to nwjc is /usr/local/npm_packages/lib/node_modules/nw/nwjs/nwjc
On a pc it should be c:\users\yourusername\AppData\Roaming\npm\node_modules\nw\nwjs\nwjc
In the folder where you have the js file to turn into bin, you can do on a PC:
c:\users\yourusername\AppData\Roaming\npm\node_modules\nw\nwjs\nwjc file.js file.bin
Keep in mind that you must use nwjc on a mac for .bin distribution on a mac and nwjc on a PC for .bin distribution on Ms windows.
Why I didn't not talk about environment variables?
After adding environment variables and running ">nwjc file.js file.bin", nwjc requires two additional system files to be located in the folder of file.js. I think it is native_blob.bin and another one named v8_context_snapshot.bin. Those two files are located in the root folder of nwjc in the system (see system path above depending on the OS). Without copying those two files, you will get an error.
Consequently, you must copy those two files manually in every folder where there is a .js file to convert into .bin when you use the command "nwjc" without the full path. On the other hand, if you use the full nwjc path, you don't need to copy the files.
http://docs.nwjs.io/en/latest/For%20Users/Advanced/Protect%20JavaScript%20Source%20Code/
Compile:
nwjc source.js binary.bin
Load:
nw.Window.get().evalNWBin(frame, 'binary.bin');
nwjc
nwjc compiler is part of nw.js sdk
in order to get nwjc you need to install sdk version with :
npm install -g nw#0.21.5-sdk
installing global may require sudo permission.
one more thing sometime if nwjc command not found you need to add nwjc binary to your environment path.
For mac os add this to your .base_profile file
export PATH=/usr/local/lib/node_modules/nw/nwjs:$PATH
and do source ~/.bash_profile
For the records, the command for adding NWJC to your bash profile works the same on linux too.
export PATH=/usr/local/lib/node_modules/nw/nwjs:$PATH
Just try it, it worked for me.
This may well have been asked before I just couldn't figure out the right term to search.
I'm writing a client-server application to run on an OSX desktop which will talk to a MySQL server on the local network. It seems long-winded to implement a web-services API when basically a bunch of SQL statements will be perfect internally.
I've wrestled with the install procedure for MySQL server on my development machine, ad had to resort to symlinking libmysqlclient.18.dylib into /usr/lib even though i'd put the include path in header search paths.
What I need to know is how do I create a .app file I can send to other machines that will have access to the libmysqlclient.18.dylib file?
I'm used to Windows having installers to do this and a bit new to OSX programming although i've been doing Obj-c for iDevices for 2 years.
Is there a setting which allows the library to be copied into the .app file or do I need to install the mysql connector on each machine - if so, how do I get around the symlink issue, ideally I need it to work from the stock folders.
If this has been answered somewhere else, please point me in the right direction.
At build time the static linker on OS X, ld, writes the shared library identifier of each library that your application links against in to the application binary. At run time the dynamic linker, dyld, attempts to load each shared library from the paths specified in the application binary. You can see this information using otool -L YourApp.app/Contents/MacOS/YourApp.
The fact you needed to symlink libmysqlclient.18.dylib in to /usr/lib suggests that the shared library identifier of libmysqlclient.18.dylib is something like /usr/lib/libmysqlclient.18.dylib. To include the library in your .app bundle in a way that your application will use it rather than looking in /usr/lib you need to:
Change the shared library identifier of libmysqlclient.18.dylib so that dyld will look for the binary relative to your application binary. This is typically done by running install_name_tool -id #executable_path/../Frameworks/libmysqlclient.18.dylib libmysqlclient.18.dylib.
Copy the modified libmysqlclient.18.dylib in to the Frameworks subdirectroy in your application bundle. This is typically done using a Copy Files build phase in your Xcode project.
You should then be able to verify that the install name written in to your application binary is #executable_path/../Frameworks/libmysqlclient.18.dylib rather than /usr/lib/libmysqlclient.18.dylib (using otool -L YourApp.app/Contents/MacOS/YourApp again). If the install name isn't correct then you'll need to ensure that your linker search path is set up to find your modified version of libmysqlclient.18.dylib ahead of any other versions you may have.
So from what little I understand about packaging for Macs, I see that the actual program that launches is the one defined under the CFBundleExecutable key in Info.plist.
<key>CFBundleExecutable</key>
<string>JavaApplicationStub</string>
Now, my app doesnt work if /APP/Content/MacOS/JavaApplicationStub is not chmodded +x (It just fails silently without doing anything, which is a pain!).
Fair enough, its not executable I guess. But its a big problem if you are copying the app from somewhere that dosent support +x properties on files; such as windows, fat32 USB keys, CDROMs, websites, zip files, etc...
What can I do in these instances to make the app able to run? Manually setting the execute bit is not an option.
There's got to be people who run Mac apps off CD, at the very least!
I think your only option is to package the APP bundle into a DMG file, or tar.
DMG is more standard and just as easy to do as using tar or zipping. The command line we use is:
hdiutil create -srcfolder Last.fm.app -format UDZO -imagekey zlib-level=9 -scrub Last.fm.dmg
You can tar from any platform, (even Windows, if you install cygwin, or use the GNU standalone, http://gnuwin32.sourceforge.net/packages/gtar.htm)
tar cf app.tar app_directory
With gzip compression:
tar czf app.tar.gz app_directory
#mxcl, that works, sort of, thanks. However, you need to be on a Mac to run hdiutil :(.
Also, it mucks up the paths of the app... there were some files(like the db file) that were not inside the .app folder, and thus are not included in the .DMG file.
Im building on windows, and the app is getting deployed to removable media. The whole point is to avoid installing anything.
The app runs on windows aswell, so there is a windows .exe alongside the mac.app on the root of the disk. There is also a sqllite.db file that both versions of the application share. Multi-platform is hard :/