kopia lustrzana https://github.com/jameshball/osci-render
Merge develop
commit
a32634424c
|
|
@ -137,10 +137,14 @@ jobs:
|
||||||
if: matrix.os == 'macos-latest'
|
if: matrix.os == 'macos-latest'
|
||||||
run: spctl -a -vvv -t install "bin/${{ matrix.project }}-${{ matrix.version }}.pkg"
|
run: spctl -a -vvv -t install "bin/${{ matrix.project }}-${{ matrix.version }}.pkg"
|
||||||
|
|
||||||
|
- name: List files
|
||||||
|
run: Get-ChildItem -Recurse ${{ github.workspace }}
|
||||||
|
shell: pwsh
|
||||||
|
|
||||||
# Windows packaging (Inno Setup)
|
# Windows packaging (Inno Setup)
|
||||||
- name: Compile .ISS to .EXE Installer
|
- name: Compile .ISS to .EXE Installer
|
||||||
if: matrix.os == 'windows-latest'
|
if: matrix.os == 'windows-latest'
|
||||||
uses: Minionguyjpro/Inno-Setup-Action@v1.2.2
|
uses: Minionguyjpro/Inno-Setup-Action@v1.2.7
|
||||||
with:
|
with:
|
||||||
path: "packaging/${{ matrix.project }}.iss"
|
path: "packaging/${{ matrix.project }}.iss"
|
||||||
|
|
||||||
|
|
|
||||||
|
Przed Szerokość: | Wysokość: | Rozmiar: 222 B Po Szerokość: | Wysokość: | Rozmiar: 222 B |
|
|
@ -143,6 +143,36 @@ void EffectsComponent::resized() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void EffectsComponent::changeListenerCallback(juce::ChangeBroadcaster* source) {
|
void EffectsComponent::changeListenerCallback(juce::ChangeBroadcaster* source) {
|
||||||
|
// Recompute whether any effects are currently selected in the new project
|
||||||
|
bool anySelected = false;
|
||||||
|
{
|
||||||
|
juce::SpinLock::ScopedLockType lock(audioProcessor.effectsLock);
|
||||||
|
for (const auto& eff : audioProcessor.toggleableEffects) {
|
||||||
|
const bool isSelected = (eff->selected == nullptr) ? true : eff->selected->getBoolValue();
|
||||||
|
if (isSelected) { anySelected = true; break; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Show the grid only when there are no selected effects in the project
|
||||||
|
showingGrid = ! anySelected;
|
||||||
|
|
||||||
|
if (showingGrid) {
|
||||||
|
grid.setVisible(true);
|
||||||
|
listBox.setVisible(false);
|
||||||
|
} else {
|
||||||
|
grid.setVisible(false);
|
||||||
|
listBox.setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Always refresh disabled states so opened projects immediately reflect which
|
||||||
|
// effects are already in use, and so the Cancel button visibility is correct.
|
||||||
|
grid.refreshDisabledStates();
|
||||||
|
|
||||||
|
// Refresh list contents to reflect newly loaded project data
|
||||||
itemData.resetData();
|
itemData.resetData();
|
||||||
listBox.updateContent();
|
listBox.updateContent();
|
||||||
|
|
||||||
|
// Ensure layout updates after visibility changes
|
||||||
|
resized();
|
||||||
|
repaint();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
#include "audio/BitCrushEffect.h"
|
#include "audio/BitCrushEffect.h"
|
||||||
#include "audio/BulgeEffect.h"
|
#include "audio/BulgeEffect.h"
|
||||||
#include "audio/TwistEffect.h"
|
#include "audio/TwistEffect.h"
|
||||||
#include "audio/PolygonBitCrushEffect.h"
|
#include "audio/PolygonizerEffect.h"
|
||||||
#include "audio/SpiralBitCrushEffect.h"
|
#include "audio/SpiralBitCrushEffect.h"
|
||||||
#include "audio/DistortEffect.h"
|
#include "audio/DistortEffect.h"
|
||||||
#include "audio/UnfoldEffect.h"
|
#include "audio/UnfoldEffect.h"
|
||||||
|
|
@ -63,7 +63,7 @@ OscirenderAudioProcessor::OscirenderAudioProcessor() : CommonAudioProcessor(Buse
|
||||||
toggleableEffects.push_back(BounceEffect().build());
|
toggleableEffects.push_back(BounceEffect().build());
|
||||||
toggleableEffects.push_back(TwistEffect().build());
|
toggleableEffects.push_back(TwistEffect().build());
|
||||||
toggleableEffects.push_back(SkewEffect().build());
|
toggleableEffects.push_back(SkewEffect().build());
|
||||||
toggleableEffects.push_back(PolygonBitCrushEffect().build());
|
toggleableEffects.push_back(PolygonizerEffect().build());
|
||||||
toggleableEffects.push_back(KaleidoscopeEffect(*this).build());
|
toggleableEffects.push_back(KaleidoscopeEffect(*this).build());
|
||||||
toggleableEffects.push_back(VortexEffect().build());
|
toggleableEffects.push_back(VortexEffect().build());
|
||||||
toggleableEffects.push_back(GodRayEffect().build());
|
toggleableEffects.push_back(GodRayEffect().build());
|
||||||
|
|
|
||||||
|
|
@ -64,14 +64,16 @@ public:
|
||||||
std::shared_ptr<osci::Effect> frequencyEffect = std::make_shared<osci::SimpleEffect>(
|
std::shared_ptr<osci::Effect> frequencyEffect = std::make_shared<osci::SimpleEffect>(
|
||||||
[this](int index, osci::Point input, const std::vector<std::atomic<float>>& values, float sampleRate) {
|
[this](int index, osci::Point input, const std::vector<std::atomic<float>>& values, float sampleRate) {
|
||||||
// TODO: Root cause why the epsilon is needed. This prevents a weird bug on mac.
|
// TODO: Root cause why the epsilon is needed. This prevents a weird bug on mac.
|
||||||
frequency = values[0].load() + 0.00001;
|
frequency = values[0].load() + 0.000001;
|
||||||
return input;
|
return input;
|
||||||
},
|
},
|
||||||
new osci::EffectParameter(
|
new osci::EffectParameter(
|
||||||
"Frequency",
|
"Frequency",
|
||||||
"Controls how many times per second the image is drawn, thereby controlling the pitch of the sound. Lower frequencies result in more-accurately drawn images, but more flickering, and vice versa.",
|
"Controls how many times per second the image is drawn, thereby controlling the pitch of the sound. Lower frequencies result in more-accurately drawn images, but more flickering, and vice versa.",
|
||||||
"frequency",
|
"frequency",
|
||||||
VERSION_HINT, 220.0, 0.0, 4200.0));
|
VERSION_HINT, 220.0, 0.0, 4200.0
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
std::shared_ptr<DelayEffect> delayEffect = std::make_shared<DelayEffect>();
|
std::shared_ptr<DelayEffect> delayEffect = std::make_shared<DelayEffect>();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
#include "../MathUtil.h"
|
#include "../MathUtil.h"
|
||||||
|
|
||||||
// Inspired by xenontesla122
|
// Inspired by xenontesla122
|
||||||
class PolygonBitCrushEffect : public osci::EffectApplication {
|
class PolygonizerEffect : public osci::EffectApplication {
|
||||||
public:
|
public:
|
||||||
osci::Point apply(int index, osci::Point input, osci::Point externalInput, const std::vector<std::atomic<float>>&values, float sampleRate) override {
|
osci::Point apply(int index, osci::Point input, osci::Point externalInput, const std::vector<std::atomic<float>>&values, float sampleRate) override {
|
||||||
const double pi = juce::MathConstants<double>::pi;
|
const double pi = juce::MathConstants<double>::pi;
|
||||||
|
|
@ -40,23 +40,23 @@ public:
|
||||||
|
|
||||||
std::shared_ptr<osci::Effect> build() const override {
|
std::shared_ptr<osci::Effect> build() const override {
|
||||||
auto eff = std::make_shared<osci::SimpleEffect>(
|
auto eff = std::make_shared<osci::SimpleEffect>(
|
||||||
std::make_shared<PolygonBitCrushEffect>(),
|
std::make_shared<PolygonizerEffect>(),
|
||||||
std::vector<osci::EffectParameter*>{
|
std::vector<osci::EffectParameter*>{
|
||||||
new osci::EffectParameter("Polygon Bit Crush",
|
new osci::EffectParameter("Polygonizer",
|
||||||
"Constrains points to a polygon pattern.",
|
"Constrains points to a polygon pattern.",
|
||||||
"polygonBitCrush", VERSION_HINT, 1.0, 0.0, 1.0),
|
"polygonizer", VERSION_HINT, 1.0, 0.0, 1.0),
|
||||||
new osci::EffectParameter("Sides", "Controls the number of sides of the polygon pattern.",
|
new osci::EffectParameter("Sides", "Controls the number of sides of the polygon pattern.",
|
||||||
"polygonBitCrushSides", VERSION_HINT, 5.0, 3.0, 8.0),
|
"polygonizerSides", VERSION_HINT, 5.0, 3.0, 8.0),
|
||||||
new osci::EffectParameter("Stripe Size",
|
new osci::EffectParameter("Stripe Size",
|
||||||
"Controls the spacing between the stripes of the polygon pattern.",
|
"Controls the spacing between the stripes of the polygon pattern.",
|
||||||
"polygonBCStripeSize", VERSION_HINT, 0.5, 0.0, 1.0),
|
"polygonizerStripeSize", VERSION_HINT, 0.5, 0.0, 1.0),
|
||||||
new osci::EffectParameter("Rotation", "Rotates the polygon pattern.",
|
new osci::EffectParameter("Rotation", "Rotates the polygon pattern.",
|
||||||
"polygonBCRotation", VERSION_HINT, 0.0, 0.0, 1.0, 0.0001, osci::LfoType::Sawtooth, 0.1),
|
"polygonizerRotation", VERSION_HINT, 0.0, 0.0, 1.0, 0.0001, osci::LfoType::Sawtooth, 0.1),
|
||||||
new osci::EffectParameter("Stripe Phase", "Offsets the stripes of the polygon pattern.",
|
new osci::EffectParameter("Stripe Phase", "Offsets the stripes of the polygon pattern.",
|
||||||
"polygonBCStripePhase", VERSION_HINT, 0.0, 0.0, 1.0, 0.0001, osci::LfoType::Sawtooth, 2.0)
|
"polygonizerStripePhase", VERSION_HINT, 0.0, 0.0, 1.0, 0.0001, osci::LfoType::Sawtooth, 2.0)
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
eff->setIcon(BinaryData::polygon_bitcrush_svg);
|
eff->setIcon(BinaryData::polygonizer_svg);
|
||||||
return eff;
|
return eff;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -276,8 +276,9 @@ void DraggableListBox::itemDropped(const SourceDetails& details)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fromIndex >= 0 && insertIndex >= 0)
|
if (fromIndex >= 0 && insertIndex >= 0) {
|
||||||
m->moveByInsertIndex(fromIndex, insertIndex);
|
m->moveByInsertIndex(fromIndex, insertIndex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
clearDropIndicator();
|
clearDropIndicator();
|
||||||
|
|
|
||||||
|
|
@ -107,28 +107,15 @@ public:
|
||||||
{
|
{
|
||||||
const int count = modelData.getNumItems();
|
const int count = modelData.getNumItems();
|
||||||
if (count <= 0) return;
|
if (count <= 0) return;
|
||||||
insertIndex = juce::jlimit(0, count, insertIndex);
|
int toIndex = juce::jlimit(0, count, insertIndex);
|
||||||
// Dropping at the very end (after last item) should move the item to the end.
|
|
||||||
if (insertIndex == count)
|
|
||||||
{
|
|
||||||
if (fromIndex != count - 1 && count > 1)
|
|
||||||
modelData.moveAfter(fromIndex, count - 1);
|
|
||||||
// Nothing to do if already last.
|
|
||||||
listBox.updateContent();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// No-op if user drops item back in place (before itself) or immediately after itself.
|
// No-op if user drops item back in place (before itself) or immediately after itself.
|
||||||
if (insertIndex == fromIndex || insertIndex == fromIndex + 1)
|
if (toIndex == fromIndex || toIndex == fromIndex + 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int toIndex = insertIndex;
|
|
||||||
if (toIndex > fromIndex)
|
|
||||||
toIndex -= 1; // account for removal shifting indices when moving down
|
|
||||||
|
|
||||||
if (toIndex <= 0)
|
if (toIndex <= 0)
|
||||||
modelData.moveBefore(fromIndex, 0);
|
modelData.moveBefore(fromIndex, 0);
|
||||||
else if (toIndex >= count - 1)
|
else if (toIndex >= count)
|
||||||
modelData.moveAfter(fromIndex, count - 1); // treat anything past last valid index as end
|
modelData.moveAfter(fromIndex, count - 1); // treat anything past last valid index as end
|
||||||
else
|
else
|
||||||
modelData.moveBefore(fromIndex, toIndex);
|
modelData.moveBefore(fromIndex, toIndex);
|
||||||
|
|
|
||||||
|
|
@ -40,8 +40,9 @@ void OsciMainMenuBarModel::resetMenuItems() {
|
||||||
"\n\n"
|
"\n\n"
|
||||||
"A huge thank you to:\n"
|
"A huge thank you to:\n"
|
||||||
"DJ_Level_3, for contributing several features to osci-render\n"
|
"DJ_Level_3, for contributing several features to osci-render\n"
|
||||||
|
"Anthony Hall, for adding many new effects, and improving existing ones\n"
|
||||||
"BUS ERROR Collective, for providing the source code for the Hilligoss encoder\n"
|
"BUS ERROR Collective, for providing the source code for the Hilligoss encoder\n"
|
||||||
"Jean Perbet (@jeanprbt) for the osci-render macOS icon\n"
|
"TheDumbDude, for contributing several example Lua files\n"
|
||||||
"All the community, for suggesting features and reporting issues!",
|
"All the community, for suggesting features and reporting issues!",
|
||||||
std::any_cast<int>(audioProcessor.getProperty("objectServerPort")));
|
std::any_cast<int>(audioProcessor.getProperty("objectServerPort")));
|
||||||
options.content.setOwned(about);
|
options.content.setOwned(about);
|
||||||
|
|
|
||||||
|
|
@ -166,7 +166,7 @@ public:
|
||||||
setWantsKeyboardFocus (false);
|
setWantsKeyboardFocus (false);
|
||||||
|
|
||||||
auto content = new juce::Component();
|
auto content = new juce::Component();
|
||||||
setViewedComponent(content, false);
|
setViewedComponent(content, true);
|
||||||
content->setWantsKeyboardFocus (false);
|
content->setWantsKeyboardFocus (false);
|
||||||
|
|
||||||
// Enable scroll fades for list views by default
|
// Enable scroll fades for list views by default
|
||||||
|
|
@ -1076,3 +1076,4 @@ juce::MouseCursor VListBoxModel::getMouseCursorForRow (int)
|
||||||
{
|
{
|
||||||
return juce::MouseCursor::NormalCursor;
|
return juce::MouseCursor::NormalCursor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
addUsingNamespaceToJuceHeader="0" jucerFormatVersion="1" pluginCharacteristicsValue="pluginWantsMidiIn"
|
addUsingNamespaceToJuceHeader="0" jucerFormatVersion="1" pluginCharacteristicsValue="pluginWantsMidiIn"
|
||||||
pluginManufacturer="jameshball" aaxIdentifier="sh.ball.oscirender"
|
pluginManufacturer="jameshball" aaxIdentifier="sh.ball.oscirender"
|
||||||
cppLanguageStandard="20" projectLineFeed=" " headerPath="./include"
|
cppLanguageStandard="20" projectLineFeed=" " headerPath="./include"
|
||||||
version="2.6.2.0" companyName="James H Ball" companyWebsite="https://osci-render.com"
|
version="2.6.2.2" companyName="James H Ball" companyWebsite="https://osci-render.com"
|
||||||
companyEmail="james@ball.sh" defines="NOMINMAX=1 INTERNET_FLAG_NO_AUTO_REDIRECT=0 OSCI_PREMIUM=1 JUCE_USE_CUSTOM_PLUGIN_STANDALONE_APP=1 JUCE_MODAL_LOOPS_PERMITTED=1"
|
companyEmail="james@ball.sh" defines="NOMINMAX=1 INTERNET_FLAG_NO_AUTO_REDIRECT=0 OSCI_PREMIUM=1 JUCE_USE_CUSTOM_PLUGIN_STANDALONE_APP=1 JUCE_MODAL_LOOPS_PERMITTED=1"
|
||||||
pluginAUMainType="'aumf'" postExportShellCommandPosix="echo "Building LuaJIT for $OSTYPE..." && DIR=%%1%% %%1%%/luajit_linux_macos.sh ">
|
pluginAUMainType="'aumf'" postExportShellCommandPosix="echo "Building LuaJIT for $OSTYPE..." && DIR=%%1%% %%1%%/luajit_linux_macos.sh ">
|
||||||
<MAINGROUP id="j5Ge2T" name="osci-render">
|
<MAINGROUP id="j5Ge2T" name="osci-render">
|
||||||
|
|
@ -127,8 +127,7 @@
|
||||||
<FILE id="zFdUYi" name="planet.svg" compile="0" resource="1" file="Resources/svg/planet.svg"/>
|
<FILE id="zFdUYi" name="planet.svg" compile="0" resource="1" file="Resources/svg/planet.svg"/>
|
||||||
<FILE id="sfWuFd" name="play.svg" compile="0" resource="1" file="Resources/svg/play.svg"/>
|
<FILE id="sfWuFd" name="play.svg" compile="0" resource="1" file="Resources/svg/play.svg"/>
|
||||||
<FILE id="FJG3Ht" name="plus.svg" compile="0" resource="1" file="Resources/svg/plus.svg"/>
|
<FILE id="FJG3Ht" name="plus.svg" compile="0" resource="1" file="Resources/svg/plus.svg"/>
|
||||||
<FILE id="NVf72g" name="polygon_bitcrush.svg" compile="0" resource="1"
|
<FILE id="iHiXPh" name="polygonizer.svg" compile="0" resource="1" file="Resources/svg/polygonizer.svg"/>
|
||||||
file="Resources/svg/polygon_bitcrush.svg"/>
|
|
||||||
<FILE id="f0yiwT" name="puzzle.svg" compile="0" resource="1" file="Resources/svg/puzzle.svg"/>
|
<FILE id="f0yiwT" name="puzzle.svg" compile="0" resource="1" file="Resources/svg/puzzle.svg"/>
|
||||||
<FILE id="ElMcEN" name="pyramid.svg" compile="0" resource="1" file="Resources/svg/pyramid.svg"/>
|
<FILE id="ElMcEN" name="pyramid.svg" compile="0" resource="1" file="Resources/svg/pyramid.svg"/>
|
||||||
<FILE id="PFc2q2" name="random.svg" compile="0" resource="1" file="Resources/svg/random.svg"/>
|
<FILE id="PFc2q2" name="random.svg" compile="0" resource="1" file="Resources/svg/random.svg"/>
|
||||||
|
|
@ -174,6 +173,8 @@
|
||||||
</GROUP>
|
</GROUP>
|
||||||
<GROUP id="{75439074-E50C-362F-1EDF-8B4BE9011259}" name="Source">
|
<GROUP id="{75439074-E50C-362F-1EDF-8B4BE9011259}" name="Source">
|
||||||
<GROUP id="{85A33213-D880-BD92-70D8-1901DA6D23F0}" name="audio">
|
<GROUP id="{85A33213-D880-BD92-70D8-1901DA6D23F0}" name="audio">
|
||||||
|
<FILE id="EjkbRe" name="PolygonizerEffect.h" compile="0" resource="0"
|
||||||
|
file="Source/audio/PolygonizerEffect.h"/>
|
||||||
<FILE id="XSUjDz" name="KaleidoscopeEffect.h" compile="0" resource="0"
|
<FILE id="XSUjDz" name="KaleidoscopeEffect.h" compile="0" resource="0"
|
||||||
file="Source/audio/KaleidoscopeEffect.h"/>
|
file="Source/audio/KaleidoscopeEffect.h"/>
|
||||||
<FILE id="mREEpc" name="UnfoldEffect.h" compile="0" resource="0" file="Source/audio/UnfoldEffect.h"/>
|
<FILE id="mREEpc" name="UnfoldEffect.h" compile="0" resource="0" file="Source/audio/UnfoldEffect.h"/>
|
||||||
|
|
@ -182,8 +183,6 @@
|
||||||
<FILE id="tU2pQl" name="SkewEffect.h" compile="0" resource="0" file="Source/audio/SkewEffect.h"/>
|
<FILE id="tU2pQl" name="SkewEffect.h" compile="0" resource="0" file="Source/audio/SkewEffect.h"/>
|
||||||
<FILE id="yxWOsR" name="DuplicatorEffect.h" compile="0" resource="0"
|
<FILE id="yxWOsR" name="DuplicatorEffect.h" compile="0" resource="0"
|
||||||
file="Source/audio/DuplicatorEffect.h"/>
|
file="Source/audio/DuplicatorEffect.h"/>
|
||||||
<FILE id="GJoA2i" name="PolygonBitCrushEffect.h" compile="0" resource="0"
|
|
||||||
file="Source/audio/PolygonBitCrushEffect.h"/>
|
|
||||||
<FILE id="GbAmhn" name="SpiralBitCrushEffect.h" compile="0" resource="0"
|
<FILE id="GbAmhn" name="SpiralBitCrushEffect.h" compile="0" resource="0"
|
||||||
file="Source/audio/SpiralBitCrushEffect.h"/>
|
file="Source/audio/SpiralBitCrushEffect.h"/>
|
||||||
<FILE id="HE3dFE" name="AudioRecorder.h" compile="0" resource="0" file="Source/audio/AudioRecorder.h"/>
|
<FILE id="HE3dFE" name="AudioRecorder.h" compile="0" resource="0" file="Source/audio/AudioRecorder.h"/>
|
||||||
|
|
|
||||||
|
|
@ -46,10 +46,10 @@ Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{
|
||||||
Name: "deletefiles"; Description: "Remove any existing settings (Clean installation)"; Flags: unchecked
|
Name: "deletefiles"; Description: "Remove any existing settings (Clean installation)"; Flags: unchecked
|
||||||
|
|
||||||
[Files]
|
[Files]
|
||||||
Source: "..\Builds\osci-render\VisualStudio2022\x64\Release\Standalone Plugin\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "{#SourcePath}\..\Builds\osci-render\VisualStudio2022\x64\Release\Standalone Plugin\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "..\Builds\osci-render\VisualStudio2022\x64\Release\VST3\osci-render.vst3\Contents\x86_64-win\{#MyAppVstName}"; DestDir: "{cf}\VST3"; Flags: ignoreversion
|
Source: "{#SourcePath}\..\Builds\osci-render\VisualStudio2022\x64\Release\VST3\osci-render.vst3\Contents\x86_64-win\{#MyAppVstName}"; DestDir: "{cf}\VST3"; Flags: ignoreversion
|
||||||
Source: "..\External\spout\SpoutLibrary.dll"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "{#SourcePath}\..\External\spout\SpoutLibrary.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "..\External\spout\SpoutLibrary.dll"; DestDir: "{sys}"; Flags: ignoreversion
|
Source: "{#SourcePath}\..\External\spout\SpoutLibrary.dll"; DestDir: "{sys}"; Flags: ignoreversion
|
||||||
|
|
||||||
[InstallDelete]
|
[InstallDelete]
|
||||||
Type: files; Name: {userappdata}\osci-render\osci-render.settings; Tasks: deletefiles
|
Type: files; Name: {userappdata}\osci-render\osci-render.settings; Tasks: deletefiles
|
||||||
|
|
@ -68,3 +68,4 @@ Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: de
|
||||||
[Run]
|
[Run]
|
||||||
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
|
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Ładowanie…
Reference in New Issue